2010-05-11 9 views
19

È possibile mascherare i paesi vicini in GoogleMap? Nel mio caso, voglio solo mostrare la Svezia da un punto di vista. In una seconda vista, solo Norvegia, Danimarca ecc. Ecc.Posso mostrare un solo paese (mascherato) in GoogleMaps?

So che è possibile disegnare linee poligonali e riempirle di conseguenza sull'API di Maps. Il problema è che i set di risultati diventano enormi o le linee diventano molto difficili ecc ... Sarebbe bello se GoogleMaps potesse consegnare un paese al momento senza vicini.

Qualcuno sa di un buon database di coordinate con i confini nazionali?

risposta

21

È possibile creare poligoni molto complessi in Mappe senza un calo delle prestazioni, se li memorizzi nel formato di file KML e li carichi come KmlLayers. KML è un formato di file vettoriale basato su XML per i dati geografici. La bellezza dell'utilizzo di file KML in Google Maps è che sono resi su server Google in semplici file PNG, corrispondenti alla risoluzione corrente e al riquadro di delimitazione della visualizzazione di Maps in qualsiasi momento, indipendentemente dalla complessità dei dati poligonali originali. Quindi tutta la complessità è gestita lato server su Google.

Ecco uno sample of a project, in cui ho utilizzato tale mascheramento per uno degli stati federali della Germania. (I dintorni in questo caso non sono completamente mascherati ma solo attenuati, ma puoi anche mascherarli con la stessa facilità cambiando il valore alfa del colore di riempimento nel file KML.)

Per una rapida revisione KML i file possono anche essere caricati direttamente nel sito Web pubblico di Google Maps (inserendo l'URL nel campo di ricerca). Ecco il file KML che ho utilizzato nel progetto precedente, loaded directly into Google Maps. (In realtà ho utilizzato un file KMZ, ma è semplicemente un file KML contenuto in un archivio ZIP. Puoi comprimere e decomprimere con normali strumenti ZIP.)
INIZIA AGGIORNAMENTO 07/2015: Purtroppo Google ha RIMOSSO la possibilità di inserisci direttamente l'URL di un file KML/KMZ nel campo di ricerca delle loro Google Maps pubbliche quando hanno lanciato la versione ridisegnata nel 2014. Puoi comunque utilizzare tutte le tecniche discusse in questa risposta ma non puoi semplicemente visualizzare in anteprima i file KML inserendo il loro URL in il campo di ricerca più Se hai bisogno del KMZ menzionato sopra per ulteriori analisi, puoi download it here. AGGIORNAMENTO AGGIORNATO

Si prega di notare che Google implica un limite di dimensione per i file KML/KMZ (attualmente 10 Mb non compressi, 3 Mb compressi - details see here). Se i file KML devono essere di grandi dimensioni, è disponibile un software per ridurre la complessità (vedere gli esempi here e here).

Troverete dati cartografici gratuiti in molti luoghi su Internet, la maggior parte dei quali in formato shapefile ESRI. Un'ottima fonte per le mappe dei paesi è http://www.gadm.org/ con il grande vantaggio di fornire i loro dati anche in formato KML/KMZ. Se dovessi convertire gli shapefile ESRI in KML, dai uno sguardo all'ottimo (e gratuito) OGR converter.

Si prega di notare che i file KML sono solo una soluzione se i poligoni sono statici (come il confine della Svezia) e non dipendono da alcun input dell'utente. Per i poligoni dinamici dovrai comunque utilizzare la classe Polygon dell'API di Maps con le limitazioni di complessità che hai menzionato.

+0

Ciao, grande risposta, ma il collegamento KMZ è rotto. Come hai stilizzato un segnaposto in modo che all'esterno sia mascherato – wrecker

+1

Ciao @wrecker, hai ragione, il collegamento è stato interrotto. Ho corretto il collegamento, ma ho scoperto che l'opzione per visualizzare direttamente i file KML/KMZ nel campo di ricerca del pubblico di Google Maps è stata rimossa quando ha lanciato la sua nuova versione nel 2014. Puoi comunque utilizzare tutte le tecniche discusse qui, solo perdere l'opzione di anteprima semplice. Per mascherare l'esterno di un paese, ho messo un cerchio molto grande con il paese preso a pugni. Scarica il mio KMZ (link che funziona di nuovo ora) e controlla. – Jpsy

4

avuto un problema simile e gestito mediante la combinazione GAMPS con tavoli di fusione:

var table_id = 420419; //can be exchanged wit another table 
var FT_Query = "SELECT 'kml_4326' FROM "+ table_id +" WHERE 'name_0' NOT EQUAL TO 'SWEDEN'"; 
var FT_Options = 
    { 
    suppressInfoWindows: true, 
    query: FT_Query 
    }; 
var layer = new google.maps.FusionTablesLayer(table_id, FT_Options); 
layer.setMap(map); 
Problemi correlati