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
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
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.
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 <coordinates> 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
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
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);
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>... Leer más ...
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
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.
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
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.
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.