2014-06-25 9 views
6

से सभी सुविधाओं निकालें मैं की तरह कुछ प्रयोग किया है:डेटा परत

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

मेरी नक्शे के map.data परत करने के लिए एक GeoJSON आकार फ़ाइल को लोड करने। आकृति फ़ाइल में, मानचित्र पर खींचे जाने वाले बहुभुज को परिभाषित करने वाली कुछ 'फीचर' कक्षाएं हैं। यहां तक ​​कि मुझे कोई समस्या नहीं है।

बाद में, मैं दूसरी ओर एक और geojson फ़ाइल लोड करना चाहता हूं (मानचित्र पर खींची गई 'सुविधाओं' को बदलना)। जब आप दूसरी तरफ एक और फाइल लोड करते हैं तो यह इसे दूसरे पर फिर से ले जाता है। नई geojson आकार फ़ाइल में लोड करने से पहले आप पृथ्वी पर कैसे सभी सुविधाओं की map.data परत को साफ़ करते हैं?

मैं एक पाश के साथ map.data.remove(feature) का उपयोग कर की कोशिश की है, लेकिन मैं map.data परत से सभी सुविधाओं को पाने के लिए नहीं कर पा रहे।

+0

[** इस **] (http://stackoverflow.com/questions/2948097/google-maps-api-v3-how-to-clear -overlays # answer-7882263) आपके लिए उपयोगी होगा? – blex

+0

दुर्भाग्यवश, markers map.data परत पर एक अलग परत में हैं। लेकिन पहले से ही समाधान धन्यवाद मिला। इसके अलावा अंतिम समाधान Google नक्शे api v2 – Aernor

+0

ठीक है, आपके लिए अच्छा है;) – blex

उत्तर

16

इस में प्रत्येक सुविधा को दूर सभी सुविधाओं से अधिक पुनरावृति और उन्हें map.data से निकाल देंगे करने के लिए map.data उपयोग कर सकते हैं।

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

संपादित करें 1: स्पष्टीकरण मानचित्र डेटा foreach समारोह उपयोग कॉलबैक, तो आप पैरामीटर के रूप में एक कॉलबैक फ़ंक्शन देना है: यह एक चेतावनी दिखाएगा डेटा में प्रत्येक तत्व के लिए अब

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

। ऊपर दिखाए गए कोड में पैरामीटर के साथ कॉलबैक देना भी संभव है।

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

आगे स्पष्टीकरण और उदाहरण: http://recurial.com/programming/understanding-callback-functions-in-javascript/

शायद
+1

मैंने 'map.data.forEach (map.data.remove) 'की कोशिश की लेकिन यह एक त्रुटि फेंक दी। क्या आपने वही काम नहीं किया जैसा आपने लिखा था? – Jayen

+0

आपने मेरे कोड या केवल 'map.data.forEach (map.data.remove)' की कोशिश की? – Gidy

+0

मैंने दोनों की कोशिश की। आपका रास्ता ठीक काम करता है। मेरा नहीं है मुझे लगता है कि मैं जावास्क्रिप्ट को इस तरह शॉर्टकट लेने के लिए पर्याप्त रूप से समझ नहीं पा रहा हूं। – Jayen

1

लगता है कि map.data 'सुविधा' कक्षाओं का संग्रह है।

तो आप के माध्यम से पुनरावृति और संग्रह

संबंधित मुद्दे