Mostrar/Ocultar

 Como centrar el mapa desde el fichero kml 🗺️ Foros de Google Earth y Maps 🗺️ p21 🗺️


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
SubForos: Kmz - KML
Página 1 de 1 - Tema con 18 Mensajes y 27307 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

Google_Master
Admin

Admin
Registrado:
01-06-2006
Mensajes: 16225
Visitar sitio web del autor Perfil de Twitter Perfil de Facebook
Votos: 0 👍
Responder citando
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 Google_Master Compartir:

_polifemo
SuperExpert

SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando
Con esto:

code.google.com/ ...tml#lookat
Ir arriba _polifemo Compartir:

Paput
Usuario Reciente

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

Votos: 0 👍
Responder citando
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 Paput Compartir:

_polifemo
SuperExpert

SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando
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 _polifemo Compartir:

Paput
Usuario Reciente

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

Votos: 0 👍
Responder citando
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:

_polifemo
SuperExpert

SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando
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 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:

Paput
Usuario Reciente

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

Votos: 0 👍
Responder citando
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:

Paput
Usuario Reciente

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

Votos: 0 👍
Responder citando
P.D.: las funciones geoXml.getDefaultCenter() y getDefaultBounds() devuelven null.
Ir arriba Paput Compartir:

_polifemo
SuperExpert

SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando
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 _polifemo Compartir:

Paput
Usuario Reciente

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

Votos: 0 👍
Responder citando
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:

Paput
Usuario Reciente

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

Votos: 0 👍
Responder citando
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:

_polifemo
SuperExpert

SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando
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:

Paput
Usuario Reciente

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

Votos: 0 👍
Responder citando
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:

_polifemo
SuperExpert

SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando
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:

Paput
Usuario Reciente

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

Votos: 0 👍
Responder citando
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

gis.txt   Google Maps Ver en Google Maps
 Nombre:  gis.txt
 Tamaño:  4.08 KB
 Descargado:  184 veces
Ir arriba Paput Compartir:

_polifemo
SuperExpert

SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando
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:   
SubForos: Kmz - KML
 Responder al tema   Versión Imprimible
Todas las horas son GMT + 1 Hora
Página 1 de 1 - Tema con 18 Mensajes y 27307 Lecturas - Última modificación: 21/09/2011




RSS: Foro Programación de Google Earth y Maps RSS - Ultimos 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