2012-03-09 14 views
6

मैं Wax के साथ Leaflet के साथ काम कर रहा हूं। मैं अमेरिका का नक्शा स्थापित कर रहा हूं, जो कि लीजलेट के एल। जीओजेसन का उपयोग करके जियोजसन के साथ राज्य सीमाएं खींच रहा है।मैं एक पत्रक पॉपअप में सामग्री कैसे अपडेट करूं?

मैं सब कुछ नक्शा लोड के दौरान सेट प्राप्त करने में सक्षम हूँ, लेकिन मैं के बाद नक्शा तैयार की है पॉपअप में सामग्री को समायोजित करने में सक्षम होने की जरूरत है। यहाँ मैं क्या कर रहा हूं की एक नीचे छीन संस्करण है:

var gjStates = new L.GeoJSON(null, null); 
wax.tilejson(url, function(tilejson) { 
    map = new L.Map('map').addLayer(new wax.leaf.connector(tilejson)).addLayer(gjStates); 

    gjStates.on("featureparse", function (e) { 
     if (e.properties && e.properties.name){ 
      pops[e.id.substring(4)] = e.layer.bindPopup('<h4>Hello ' + e.properties.name + '!</h4>'); 
     } 
    }); 
    for (s in usStateData) { 
     gjStates.addGeoJSON(usStateData[s]); 
    } 
}); 

अब, सब कुछ ठीक खींचता है, पॉपअप अच्छा conent है, लेकिन फिर मैं बाद में इसे बदलने के लिए चाहते हैं और इसमें संदर्भित करने के लिए कोई रास्ता नहीं है। मैंने स्रोत में देखा कि bindPopup() 'यह' देता है, जिसे मैंने सोचा था कि L.Popup ऑब्जेक्ट था, लेकिन कुछ और समाप्त हो गया। तो उदाहरण के लिए, निम्न कोड सक्रिय पॉपअप को उखाड़ फेंक देगा, विशिष्ट L.Path ऑब्जेक्ट (राज्य) के लिए विशिष्ट नहीं, मैं इसे प्राप्त करने का प्रयास कर रहा हूं।

pops['AK']._map._popup.setContent('I am ALASKA!'); 

फ़ायरबग साथ डोम के माध्यम से खुदाई, मैं भी देख सकते हैं पॉपअप सामग्री एक आंतरिक चर में सेट किया गया है और मैं इसे अपडेट कर सकते हैं। हालांकि, इसे अपडेट करने से एचटीएमएल अपडेट नहीं होता है, और मेरे पास यह पता लगाने का कोई तरीका नहीं है कि अलास्का में 52 की कुंजी है। _layers [52] में setContent() विधि भी नहीं है, जिसके लिए मैं उम्मीद करता हूं कि यह एल था .Popup ऑब्जेक्ट।

gjStates._layers[52]._popupContent = 'I am ALASKA!'; 

तो, मैं फंस गया हूं और मुझे जो चाहिए वह नहीं ढूंढ रहा हूं। प्रारंभिक प्रतिपादन के बाद मानचित्र पर एक विशिष्ट पॉपअप के संदर्भ में, और संदर्भ के लिए सामग्री का कोई तरीका है?

+0

इस उत्तर को ट्वीव करना आपके लिए काम कर सकता है: http://stackoverflow.com/a/12712987/1224449। – araichev

+0

इस समस्या वाले अन्य लोगों के लिए, यह http://stackoverflow.com/questions/34504816/leafletjs-how-to-get-a-handle-to-the-active-pop-marker – Brandan

उत्तर

1

मुझे पूरा यकीन है कि आप केवल सभी परतों के संदर्भ रख सकते हैं, और फिर पॉपअप सामग्री को बदलने के लिए बाद में layer.bindPopup() पर कॉल करें।

+0

क्या परतों में मदद कर सकता है? gjStates? यह सभी अलग-अलग राज्य सामग्री आयात करता है और मैं बस उस परत पर प्रत्येक ऑब्जेक्ट पर पॉपअप सामग्री को बदलना चाहता हूं। फीचर स्पेस इवेंट हैंडलर में –

+0

'e.layer' – Acorn

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