2014-06-25 7 views
6

ho usato qualcosa come:Rimuovere tutte le funzioni dal livello dei dati

var map; 
function initialize() { 
    map = new google.maps.Map(document.getElementById('map-canvas'), { 
    zoom: 4, 
    center: {lat: -28, lng: 137.883} 
    }); 
    map.data.loadGeoJson('https://storage.googleapis.com/maps-devrel/google.json'); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

per caricare un file di forma GeoJSON allo strato map.data della mia mappa. Nel file shape, ci sono un paio di classi 'feature' che definiscono i poligoni da disegnare sulla mappa. Fino a qui non ho problemi.

Successivamente, voglio caricare un altro file geojson sull'altro (sostituendo le "caratteristiche" disegnate sulla mappa). Quando carichi un altro file sull'altro, lo ridisegna semplicemente sull'altro. Come diavolo puoi cancellare il layer map.data di tutte le funzionalità prima di caricarlo nel nuovo file shape di geojson?

Ho provato con map.data.remove(feature) con un ciclo, ma non riesco a ottenere tutte le caratteristiche dallo strato map.data.

+0

Forse [** questa **] (http://stackoverflow.com/questions/2948097/google-maps-api-v3-how-to-clear -overlays # answer-7882263) ti sarà utile? – blex

+0

Sfortunatamente, i marcatori si trovano in un livello diverso rispetto al livello map.data. Ma ho già trovato la soluzione, grazie. Inoltre la soluzione finale è per google maps api v2 – Aernor

+0

Ok, buona per te;) – blex

risposta

16

Ciò iterare su tutte le caratteristiche e rimuoverli dal map.data.

map.data.forEach(function(feature) { 
    // If you want, check here for some constraints. 
    map.data.remove(feature); 
}); 

Modifica 1: Spiegazione Mappa uso funzione dei dati forEach callback, quindi bisogna dare una funzione di callback come parametro:

var callback = function(){ alert("Hi, I am a callback"); }; 
map.data.forEach(callback); 

Ora, per ciascun elemento dati che mostrerà un avviso . È anche possibile dare callback con parametri, come nel codice mostrato sopra.

var callback = function(feature) { 
     // If you want, check here for some constraints. 
     map.data.remove(feature); 
    }; 
    map.data.forEach(callback); 

ulteriori spiegazioni ed esempi: http://recurial.com/programming/understanding-callback-functions-in-javascript/

+1

Ho provato 'map.data.forOach (map.data.remove)' ma ha generato un errore. Non dovrebbe fare la stessa cosa di quello che hai scritto? – Jayen

+0

Hai provato il mio codice o solo 'map.data.forOach (map.data.remove)'? – Gidy

+0

Ho provato entrambi. Il tuo modo funziona bene. Il mio no. Credo di non capire javascript abbastanza bene da prendere scorciatoie come questo. – Jayen

1

Sembra che lo map.data sia una raccolta di classi "caratteristiche".

in modo da poter utilizzare il map.data per scorrere e rimuovere ogni caratteristica della collezione

Problemi correlati