2010-08-18 25 views
50

creé un programa hola mundo para cargar un archivo KML local (tomado de documentos de Google):Cargando un archivo .kml local usando google maps?

var ctaLayer = new google.maps.KmlLayer("http://localhost:8080/kml/cta.kml"); 

esto no funciona (no se carga).

Sin embargo, cuando cambio a esa línea:

var ctaLayer = new google.maps.KmlLayer("http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml"); 

se carga correctamente. Ambos archivos kml son idénticos. ¿Qué debo hacer para que se cargue cuando lo sirva yo mismo? (Probé ambas rutas absolutas y relativas, y sé que los caminos que estoy utilizando son correctos ...)

También he añadido el tipo MIME correcto para el archivo de configuración de mi servidor de aplicaciones:

<mime-mapping> 
    <extension>kml</extension> 
<mime-type>application/vnd.google-earth.kml+xml</mime-type> 
</mime-mapping> 
<mime-mapping> 
    <extension>kmz</extension> 
    <mime-type>application/vnd.google-earth.kmz</mime-type> 
</mime-mapping> 

Pero todavía no se carga

He encontrado esto en Google de docs:

La API de Google Maps es compatible con los formatos de datos KML y GeoRSS para la visualización de información geográfica. Estos formatos de datos se muestran en un mapa utilizando un objeto KmlLayer, cuyo constructor toma la URL de un archivo KML o GeoRSS de acceso público.

así que supongo que lo que estoy tratando de hacer es no posible sin servir al KML a partir de una URL de acceso público ... a menos que alguien pueda demostrar lo contrario

+0

¿Qué sucede cuando visita la URL local de KML en el navegador? –

Respuesta

53

El KML no se puede acceder ya que es en su equipo local y google no puede acceder a eso ya que no sabe cómo llegar al servidor local: 8080

+3

Esto es correcto, google necesita poder acceder a él. Tuvimos el mismo problema, porque no queríamos que nuestros archivos KML estuvieran accesibles al público. La API remota accede al archivo KML, por lo que no puede ser local, debe publicarse en la web. – Kezzer

+0

@KieranSenior puede hacer que su kml sea de acceso privado en el momento de crear kml. En Configuración de privacidad, hay dos opciones disponibles públicas y no incluidas. –

+1

bien infierno ...no es de extrañar que no haya podido encontrar una opción "rawData" (en lugar de "url") para KmlLayer. – targnation

35

Desafortunadamente no puede usar "localhost". Tiene dos opciones:

  1. Coloque el kml en un dominio disponible públicamente. (Si google no puede acceder a él, no funcionará)
  2. Utilice geoxml3, que básicamente hace lo que hace Google pero le permite descargar y alojar el archivo JS del analizador. Le permitirá cargar un KML de LOCALHOST y analizarlo por usted (objetos accesibles a través de JSON) (http://code.google.com/p/geoxml3/).

La opción # 1 puede no ser una opción para quienes trabajan en contratos de defensa y se ocupan de información confidencial, ya que el kml se envía a Google en segundo plano y se representa en el mapa.

+2

Trabaja para mí, utiliza [geoxml3] (http://code.google.com/p/geoxml3/) –

17

This website requiere copiar/pegar todo el archivo KML en el sitio web. Como alternativa, puede usar Dropbox para alojar el archivo KML utilizando su carpeta pública. Dentro de la carpeta pública de Dropbox hay un menú contextual con el botón derecho que le permite copiar la URL.

+1

Este sitio web ya no se puede usar a partir de 2017. –

+0

No creo que Dropbox permita el alojamiento de archivos en este contexto más ya sea :\ – Ragaar

Cuestiones relacionadas