मेरे पास एक OpenLayers 3.2.0 मानचित्र है जिसमें कुछ वेक्टर स्रोत ( ol.source.Vector
) और संबंधित वेक्टर परतें ( ol.layer.Vector
) हैं
जब ol.Feature
वेक्टर स्रोतों में विशेषताएं ( ) जोड़ी जाती हैं, तो उन्हें एक data
संपत्ति दी जाती है जो जावास्क्रिप्ट ऑब्जेक्ट पर सेट होती है जो कि सुविधा का प्रतिनिधित्व करती है। टाइपस्क्रिप्ट इस प्रकार है ...
vectorSource.addFeature(new ol.Feature({
geometry: /* ... */,
data: vectorData,
}));
वेक्टर लेयर्स के बाद एक स्टाइल-फंक्शन होता है जो data
प्रॉपर्टी को पढ़ता है और उसकी शैली को पुनः प्राप्त करता है:
vectorLayer = new ol.layer.Vector({
source: vectorSource,
renderBuffer: /* ... */,
style: function (feature: ol.Feature, resolution: any) {
var data = </* TypeScript Type */>feature.get('data');
if ((data) && (data.style)) {
return [data.style];
}
else {
/* return default style */
}
}
});
कभी-कभी, नक्शे से असंबंधित घटनाएं शैलियों को बदलने का कारण बनती हैं। उदाहरण के लिए, जब कोई वस्तु अमान्य हो जाती है, तो उसकी शैली बदल जाती है। स्पष्ट रूप से, चूंकि data.style
यह पूरी तरह से मेरे नियंत्रण में है, इसलिए इसे बदलना तुच्छ है।
समस्या यह है कि नक्शे को नहीं पता है कि शैली बदल गई है। यदि मैं किसी ऑब्जेक्ट की शैली को बदल देता हूं और फिर मैप को ज़ूम करता हूं, तो उसे फिर से तैयार करने के लिए मजबूर किया जाता है, मैं नोटिस करता हूं कि मेरे स्टाइल-फंक्शन चलते हैं और नई शैली को वापस करते हैं और फीचर को फिर से तैयार किया जाता है। मैं प्रोग्राम को मानचित्र को ताज़ा करने के लिए कैसे मजबूर करूं?
कुछ खोज और प्रयोग के बाद, मैंने कोशिश की है:
- खुद को बुला
render()
रहाol.Map
है। - पर बुला
dispatchChangeEvent()
रहा हैol.source.Vector
- पर बुला
redraw()
रहा हैol.layer.Vector
ये सुझाए गए थे, लेकिन उनमें से किसी ने भी काम नहीं किया, जो कि आश्चर्य की बात नहीं है क्योंकि केवल पहली विधि भी OpenLayers 3.2.0 एपीआई प्रलेखन में सूचीबद्ध है और इसे स्थिर के रूप में चिह्नित नहीं किया गया है।