Página 1 de 1 - Tema con 18 Mensajes y 27326 Lecturas
|
Autor |
Mensaje |
Jorgito_p
Usuario Reciente Registrado: 03-03-2011 Mensajes: 3
Votos: 0 👍
|
|
Hola a todos: Tengo una aplicación en una página web con un api de google maps, y me muestra un fichero kml que genero.
El problema es que me muestra el mapa de España completo. Quisiera saber si se puede programar en el fichero kml que centre el mapa en la zona que están los iconos.
Gracias
|
|
|
Ir arriba
|
Compartir:
|
|
Bezdrum
SuperExpert Registrado: 17-02-2011 Mensajes: 463
Votos: 0 👍
|
|
Depende que fichero es... Si es una ruta, te la muestra completa.
Pon el fichero, aver que es
|
|
|
Ir arriba
|
Compartir:
|
|
Google_Master
Admin Registrado: 01-06-2006 Mensajes: 16225
Votos: 0 👍
|
|
Jorgito_p Escribio: |
Hola a todos: Tengo una aplicación en una página web con un api de google maps, y me muestra un fichero kml que genero.
El problema es que me muestra el mapa de España completo. Quisiera saber si se puede programar en el fichero kml que centre el mapa en la zona que están los iconos.
Gracias |
Creo que se centra por defecto en la zona de los iconos.
Mira por ejamplo este:
www.google-earth.es/ ...hp?k=21282
Ahí puedes copiar nuestro codigo para visualizar un KMZ centrado.
|
_________________ Cada vez que sacio una curiosidad, me nacen diez...
|
|
Ir arriba
|
Compartir:
|
|
_polifemo
SuperExpert Registrado: 27-11-2009 Mensajes: 436
Votos: 0 👍
|
|
Ir arriba
|
Compartir:
|
|
Paput
Usuario Reciente Registrado: 12-09-2011 Mensajes: 8
Votos: 0 👍
|
|
Hola, llevo una semana detrás del tema (como centrar mapas desde el fichero kml y no lo consigo). Para ficheros con formato gpx no tengo problema gracias a loadgpx.4.js, pero para ficheros klm no consigo que se me centre el mapa en el track. ¿Proporciona el api alguna función para centrarlo o se ha de crear una función que busque el centro del mapa?
Si es esto último, alguien me puede ayudar, ya que de javascript no estoy muy allá.
Gracias
|
|
|
Ir arriba
|
Compartir:
|
|
_polifemo
SuperExpert Registrado: 27-11-2009 Mensajes: 436
Votos: 0 👍
|
|
paput Escribio: |
Hola, llevo una semana detrás del tema (como centrar mapas desde el fichero kml y no lo consigo). Para ficheros con formato gpx no tengo problema gracias a loadgpx.4.js, pero para ficheros klm no consigo que se me centre el mapa en el track. ¿Proporciona el api alguna función para centrarlo o se ha de crear una función que busque el centro del mapa?
Si es esto último, alguien me puede ayudar, ya que de javascript no estoy muy allá.
Gracias |
¿Desde el fichero kml? insisto en el método Look At.
Si tienes alguna duda te podemos echar un cable.
Un saludo.
|
|
|
Ir arriba
|
Compartir:
|
|
Paput
Usuario Reciente Registrado: 12-09-2011 Mensajes: 8
Votos: 0 👍
|
|
Gracias, pero no veo como puede solucionarme el problema. La gente pone en el servidor sus ficheros, que pueden ser en formato gpx o kml. Cuando quieren ver una ruta, la selecccionan y automáticamente escoge el fichero del track y lo muestra en un div con el google maps.
Var map = new GMap2(document.getElementById("map"));
Map.setCenter(new GLatLng(0,0),2);
Var geoxml = new geoxml("http:/www.miservicor/ruta.kml");
Map.addOverlay(geoxml);
Aquí me aparece medio mundo y si acerco el zoom puedo ver la ruta.El problema es que no sé como conseguir las coordenas de la ruta kml para que ya me salga la ruta.
Gracias
|
|
|
Ir arriba
|
Compartir:
|
|
_polifemo
SuperExpert Registrado: 27-11-2009 Mensajes: 436
Votos: 0 👍
|
|
Buenas paput.
Lo primero de todo, ¿sabes que estás usando el v2 de API de gmaps en lugar del v3?. No se si es un requisito del proyecto, pero vamos, si llegas a tiempo, tal vez te convenga saltar a la última versión.
Por otro lado:
paput Escribio: |
Map.setCenter(new GLatLng(0,0),2);
Aquí me aparece medio mundo y si acerco el zoom puedo ver la ruta
|
Normal, te aparece medio mundo por que le has ordenado al mapa que se centre en las coordenadas 0 de latitud, 0 de longitud y con un zoom de 2, que corresponde a medio mundo. Si en lugar de un 2 pones un 1 verás el mundo entero... Y para ver un zoom mas cercano deberás aumentar el valor hasta un máximo de...¿16?. ¿Lo ves en tu código?.
Proceso necesario en el API de la versión 2. El truco consiste en que una vez cargues el layer, ejecutes las funciones necesarias para obtener un centro y un zoom sobre las que revisualizar tu mapa.
paput Escribio: |
El problema es que no sé como conseguir las coordenas de la ruta kml para que ya me salga la ruta.
|
Editando el archivo con cualquier editor de texto y buscando la ristra de coordenadas entre las etiquetas <coordinates>...</coordinates> . Leete la estructura del linestring o el elemento que uses en tus archivos (si quieres sube un ejemplo representativo y lo comprobamos).
POSIBLES SOLUCIONES
Supongamos que quieres usar Javascript:
API v2: Una vez (y como pones en tu código) has cargado el objeto GeoXml puedes recurrir a los métodos GetDefaultCenter(), o GetdefaultBounds. Que te devolverán los parámetros que necesites para centrar la vista del mapa.
API v3: No puede ser mas simple. Cargas el kmlLayer y entre los parámetros de KmlLayerOptions estableces preserveViewport=false
Supongamos que quieres usar el propio archivo kml:
De modo manual:editas y consultas las coordenadas en el kml para completar el final del archivo con un <Look at> las coordenadas y el zoom que decidas<Look at> (haz probatinas con distintos valores). Automatizado: No he encontrado ningún modo... Así que supongo que no te quedará otra que inventarte alguna función que lea el kml (con SimpleXMLElement si usas PHP) y por ejemplo saque la media aritmética de todas las coordenadas para determinar un centro, y calcule las coordenadas extremas o el "bound" para (según sean las dimensiones de tu div) determinar un nivel de zoom. Claro que antes de acabar de leer esta parrafada ya habrás abandonado la idea
Sinceramente te diría que por este y otros problemas te conviene usar el APIv3, este no será el único caso en el que este API te facilite el trabajo respecto al APIv2. Pero yo no puedo ayudarte mas hasta que no decidas que camino quieres seguir.
Ya nos cuentas.
|
|
|
Ir arriba
|
Compartir:
|
|
Paput
Usuario Reciente Registrado: 12-09-2011 Mensajes: 8
Votos: 0 👍
|
|
Ante todo, gracias por la ayuda.
El tema de la versión 2 es que utilizo para mostrar los tracks gpx funciones que ya están hechas y utiliza esta version (loadgpx.4.js), aunque si la versión 3 permite mostrar los tracks en diferentes formatos sería una buena ocasión para cambiar.
Programo en java y javascript no lo domino mucho (tengo problemas sobre todo con el DOM). Los métodos que me dices ya los he probado y no me devuelven nada (me parece que el fichero no se carga, ya que puse una sentencia if para probar y siempre se iba hacia el fichero no cargado (geoXml.hasLoaded())
¿Falta algo aquí para que coja en defaultCenter?
Var geoXml = new GGeoXml("http://...track.kml");
Map.setCenter(geoXml.getDefaultCenter(), geoXml.getDefaultBounds());
Map.addOverlay(geoXml);
Gracias
|
|
|
Ir arriba
|
Compartir:
|
|
Paput
Usuario Reciente Registrado: 12-09-2011 Mensajes: 8
Votos: 0 👍
|
|
P.D.: las funciones geoXml.getDefaultCenter() y getDefaultBounds() devuelven null.
|
|
|
Ir arriba
|
Compartir:
|
|
_polifemo
SuperExpert Registrado: 27-11-2009 Mensajes: 436
Votos: 0 👍
|
|
paput Escribio: |
P.D.: las funciones geoXml.getDefaultCenter() y getDefaultBounds() devuelven null. |
No he tenido tiempo de indagar. Pero advierten los manuales de referencia que estos métodos deben ser llamados una vez cargado el kml.
Prueba a usar las funciones dentro de un IF hasLoaded() THEN
|
|
|
Ir arriba
|
Compartir:
|
|
Paput
Usuario Reciente Registrado: 12-09-2011 Mensajes: 8
Votos: 0 👍
|
|
Esto ya lo he hecho, y como he dicho en el mensaje anterior, nunca me devuelve true hasLoaded().
Una idea que tenía es centrarme en un punto del kml. Alguien sabe alguna función sencilla que me coja el primer punto por ejemplo. ¿Cómo puedo acceder al fichero kml en el DOM y que me devuelva el primer punto?
Gracias, polifemo y a todos
|
|
|
Ir arriba
|
Compartir:
|
|
Paput
Usuario Reciente Registrado: 12-09-2011 Mensajes: 8
Votos: 0 👍
|
|
He estado investigando la versión 3 y, efectivamente, no hay problema en el centrado (muy bien polifemo) pero como me temía para los tracks con el api loadgpx.4 no funciona, ya que utiliza la versión 2.
He intentado coger el primer punto del tag pero no consigo acceder al fichero desde javascript
Var request = GXmlhttp.create();
Request.open("GET",path, true);
KmlDoc = request.responseXML;
Var trackpoint = kmlDoc.getElementsByTagName("coordinates");
En firefox me da error que kmlDoc no tiene propiedades.
Alguien me puede ayudar en cómo acceder al fichero xml y conseguir la pirmera coordenada del track?
Gracias
|
|
|
Ir arriba
|
Compartir:
|
|
_polifemo
SuperExpert Registrado: 27-11-2009 Mensajes: 436
Votos: 0 👍
|
|
Buenas paput.
Reconozco que me he lllevado una sorpresa al ver que la clase kmlLayer del APIv3 no carga archivos gpx. A fin de cuentas ambos formatos vienen del XML. ¿Has encontrado algún modo de cargar XML, GML y demás en el nuevo API?.
Volviendo a la versión dos: He encontrado este artículo que aborda la problemática de leer el formato xml y usar sus coordenadas para establecer placemarks mediante el API de gmaps. Creo que podrás abordarlo.
UN AVISO: podría ocurrir que el formato GPX no cumpla con todos los estándares XML. Y dado que estás usando una funcionalidad orientada al formato XML, pues tal vez surjan problemas.
A ver si ahora hay mas suerte, un saludo.
|
|
|
Ir arriba
|
Compartir:
|
|
Paput
Usuario Reciente Registrado: 12-09-2011 Mensajes: 8
Votos: 0 👍
|
|
Hola Polifemo. El método GXmlhttp del artículo es de la versión 2 (es precisamente el que utiliza el loadgpx.4 para leer el fichero gpx). En la versión 3 se utiliza XMLParsing. Estoy tratando de actualizar loadgpx para la versión 3. Si consigo algo ya lo colgaré, a parte de que le enviaré al creador del api por si quiere actualizarlo.
Gracias
|
|
|
Ir arriba
|
Compartir:
|
|
_polifemo
SuperExpert Registrado: 27-11-2009 Mensajes: 436
Votos: 0 👍
|
|
Entiendo que intentas adaptarte a la v3.
Ayer encontré este artículo que aborda la misma problemática pero contra la v3 del API.
Está en Ajax.
|
|
|
Ir arriba
|
Compartir:
|
|
Paput
Usuario Reciente Registrado: 12-09-2011 Mensajes: 8
Votos: 0 👍
|
|
Al final lo he conseguido.
Lo primero es que decididamente me he pasado a la versión 3.
Así, para los ficheros klm no hay problema (como había dicho polifemo)
Para los primeros gpx, he conseguido leerlos con XmlhttpRequest (código creo que lo proporciona google). Esto permite leer ficheros xml, así que cuando se guarda el fichero gpx en el servidor hay que cambiarle la extensión a xml (esto ya había que hacerlo con la versión 2 y loadgpx.4.js).
Se parsea el fichero xml (antes gpx) y se añade un polyline al mapa.
Después, he cambido la función que centraba y cogía el zoom de loadgpx.4 para conseguir lo mismo en la versión 3.
Os dejo el fichero con estas funciones(he cambiado la extensión js a txt ya que el foro no me deja poner ficheros js), seguro que se pueden mejorar, pero yo de javascript no domino mucho.
De esta manera se pueden leer cualquier formato de track que siga el estándard xml, cambiando el tag al que utilice cada formato.
Salut y gracias a todos
Nombre: |
gis.txt |
Tamaño: |
4.08 KB |
Descargado: |
184 veces |
|
|
|
Ir arriba
|
Compartir:
|
|
_polifemo
SuperExpert Registrado: 27-11-2009 Mensajes: 436
Votos: 0 👍
|
|
Hola paput, he estado muy ocupado estos días.
Me alegro que solucionaras el problema y gracias por compartir el código... Seguro que resulta de utilidad en un futuro.
Un saludo y esperamos volver a saber de ti.
|
|
|
Ir arriba
|
Compartir:
|
|
|