2010-08-18 20 views
50

Ho creato un programma ciao mondo per caricare un file KML locale (preso in prestito dalla documentazione di Google):Caricamento di un file .kml locale utilizzando google maps?

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

questo non funziona (nulla viene caricato).

Tuttavia, quando cambio quella linea a:

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

si carichi correttamente. Entrambi i file kml sono identici. Cosa devo fare per caricarlo quando lo sto servendo da solo? (Ho provato entrambi i percorsi assoluti e relativi, e so che i sentieri che sto usando sono corrette ...)

Inoltre ho aggiunto il tipo MIME corretto per il file di configurazione del mio appserver:

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

Ma ancora non carica.

ho trovato questo in docs di Google:

L'API di Google Maps supporta i formati di dati KML e GeoRSS per la visualizzazione di informazioni geografiche. Questi formati di dati vengono visualizzati su una mappa utilizzando un oggetto KmlLayer, il cui costruttore prende l'URL di un file KML o GeoRSS accessibile pubblicamente.

quindi credo che quello che sto cercando di fare è non possibile senza servire il file KML da un URL accessibile al pubblico ... a meno che qualcuno può dimostrare il contrario

+0

cosa succede quando visiti l'URL KML locale nel browser? –

risposta

53

Il KML non è possibile accedere dal momento che è sul tuo computer locale e Google non può accedervi poiché non sa come arrivare a localhost: 8080

+3

Questo è corretto, Google deve essere in grado di accedervi. Abbiamo avuto lo stesso problema, perché non volevamo che i nostri file KML fossero accessibili al pubblico. L'API remota accede al file KML, quindi non può essere locale, deve essere pubblicata sul Web. – Kezzer

+0

@KieranSenior puoi rendere il tuo kml accessibile in privato al momento della creazione di kml. In Privacy Impostazione Due opzioni disponibili Pubblico e Non elencato. –

+1

beh, l'inferno ...non c'è da meravigliarsi se non ho trovato un'opzione "rawData" (al contrario di "url") per KmlLayer. – targnation

35

Purtroppo non è possibile utilizzare "localhost". Avete due scelte:

  1. posizionare il kml su un dominio disponibile pubblicamente. (se Google non può accedervi, non funzionerà)
  2. Usa geoxml3 che fondamentalmente fa quello che fa Google ma ti permette di scaricare e ospitare il file JS del parser da solo. Ti permetterà di caricare un KML LOCALHOST e di analizzarlo per te (oggetti accessibili tramite JSON) (http://code.google.com/p/geoxml3/).

La scelta n. 1 potrebbe non essere un'opzione per coloro che lavorano sui contratti di difesa e trattare le informazioni sensibili mentre il kml viene inviato a google in background e visualizzato sulla mappa.

+2

Lavora per me, usa [geoxml3] (http://code.google.com/p/geoxml3/) –

17

This website richiede di copiare/incollare l'intero file KML nel sito Web. In alternativa, è possibile utilizzare Dropbox per ospitare il file KML utilizzando la propria cartella pubblica. All'interno della cartella pubblica di Dropbox c'è un menu di scelta rapida che consente di copiare l'URL.

+1

Questo sito Web non è più utilizzabile dal 2017. –

+0

Non penso che Dropbox consenta l'hosting di file in questo contesto più o :\ – Ragaar

Problemi correlati