Como centrar el mapa desde el fichero kml 🗺️ Foro Programación de Google Earth y Maps 🗺️ p61 🗺️

Foro de Programación de Google Earth y Maps Foro de Programación de Google Earth y Maps: Programación con las APIs de Google: Google Earth, Google Maps, KML, Aplicaciones Moviles
Responder al tema Versión Imprimible
Página 1 de 1 - Tema con 18 Mensajes y 29570 Lecturas
Último Mensaje:
Foro de Programación de Google Earth y Maps Ver más mensajes sobre Como centrar el mapa desde el fichero kml en el foro
Autor Mensaje

Imagen: Paput
Usuario Reciente
Usuario Reciente
Registrado:
12-09-2011
Mensajes: 8

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
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 Paput
Compartir:

Imagen: _polifemo
SuperExpert
SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
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 Escribió:

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 Escribió:

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 dellinestring 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 Riendo

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 _polifemo
Compartir:

Imagen: Paput
Usuario Reciente
Usuario Reciente
Registrado:
12-09-2011
Mensajes: 8

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
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 Paput
Compartir:

Imagen: Paput
Usuario Reciente
Usuario Reciente
Registrado:
12-09-2011
Mensajes: 8

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
P.D.: las funciones geoXml.getDefaultCenter() y getDefaultBounds() devuelven null.
Ir arriba Paput
Compartir:

Imagen: _polifemo
SuperExpert
SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
paput Escribió:
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 _polifemo
Compartir:

Imagen: Paput
Usuario Reciente
Usuario Reciente
Registrado:
12-09-2011
Mensajes: 8

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
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 Paput
Compartir:

Imagen: Paput
Usuario Reciente
Usuario Reciente
Registrado:
12-09-2011
Mensajes: 8

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
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 Paput
Compartir:

Imagen: _polifemo
SuperExpert
SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
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 _polifemo
Compartir:

Imagen: Paput
Usuario Reciente
Usuario Reciente
Registrado:
12-09-2011
Mensajes: 8

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
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 Paput
Compartir:

Imagen: _polifemo
SuperExpert
SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
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 _polifemo
Compartir:

Imagen: Paput
Usuario Reciente
Usuario Reciente
Registrado:
12-09-2011
Mensajes: 8

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
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: 231 veces
Ir arriba Paput
Compartir:

Imagen: _polifemo
SuperExpert
SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando

EnlacesAsunto: Re: Como centrar el mapa desde el fichero kml

Publicado:
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 _polifemo
Compartir:
Mostrar mensajes de anteriores:
Responder al tema Versión Imprimible
Página 1 de 1 - Tema con 18 Mensajes y 29570 Lecturas - Última modificación: 21/09/2011


RSS: Foro Programación de Google Earth y Maps RSS - Últimos Mensajes
Cambiar a:  


Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
No Puedes adjuntar archivos en este foro
Tu puedes descargar archivos en este foro

Mostrar/Ocultar Últimas Fotos del Foro