नोट: मैं एक "L.CRS.Simple" मानचित्र का उपयोग कर रहा हूं ताकि xy बिंदुओं पर आधारित मेरी मानचित्र पृष्ठभूमि छवि के रूप में एक png हो।

अब मैं एक वस्तु में मेरे पास मौजूद सूची से परतें और एक परत नियंत्रण जोड़ने का प्रयास कर रहा हूं। उदाहरण के लिए मेरे पास यह ऑब्जेक्ट है जहां मैं परत के बारे में कुछ सामान्य जानकारी संग्रहीत करता हूं। यह काम करता है लेकिन मैं अपना वर्तमान कोड दिखाने के बाद इस मुद्दे पर पहुंचूंगा।

var layerGroups = {
    'layer1' : {'icon':'icon1.png', 'name':'Name1'},
    'layer' : {'icon':'icon2.png', 'name':'Name2'},
};

मेरे पास एक खाली परत नियंत्रण भी है जिसे मैं बाद में भरने वाले मानचित्र में जोड़ता हूं।

var layerControl = L.control.layers();

//this command is ran later
layerControl.addTo(map);

तब मेरे पास यह कार्य है जो मेरी वस्तु से सभी परतों को जोड़ता है।

function addLayers()
{
    for (var layer in layerGroups)
    {
        layerGroups[layer] = L.layerGroup().addTo(map);
    }
}

संपादित करें: परतों को नियंत्रण में जोड़ने के लिए मेरे पास यह कार्य भी है।

function addLayerControl()
{
    for (var layer in layerGroups)
    {
        layerControl.addOverlay(layerGroups[layer], layerGroups[layer]);
    }
    
}

तब मेरे पास यह फ़ंक्शन है जो एक विशिष्ट परत में एक मार्कर जोड़ता है।

function addMarker(layer, x, y)
{
    L.marker(xy(x, y)).addTo(map).bindPopup('test').addTo(layerGroups[layer]);
}

यह सब काम करता है और मैं अपने मार्कर और लेयर टॉगलिंग काम देख सकता हूं। हालाँकि परत नियंत्रण कहता है [वस्तु वस्तु]।

Leaflet map broken layer controls

मैंने AddLayers() फ़ंक्शन में अपने ऑब्जेक्ट के "नाम" पैरामीटर तक पहुंचने का प्रयास करके इसे ठीक करने का प्रयास किया, लेकिन फिर नक्शा बिल्कुल भी काम नहीं करता है।

layerGroups[layer].name = L.layerGroup().addTo(map);

तो मेरा सवाल है:

(१) किसी वस्तु से मेरे मानचित्र में परतें जोड़ने का सबसे अच्छा तरीका क्या है? (ध्यान दें कि यह वस्तु बदल सकती है और उपयोगकर्ता अपनी इच्छानुसार कोई भी परत जोड़ सकता है।

(२) क्या परत में मार्कर जोड़ने का मेरा तरीका ठीक है? क्या कोई बेहतर तरीका है?

(३) वैसे भी जब मैं लेयरग्रुप्स [लेयर] = एल.लेयरग्रुप ()। एडटो (मैप) का उपयोग करता हूं; परत को डिफ़ॉल्ट रूप से छुपाने के लिए?

मुझे लगता है कि बस इतना ही, मैं अपनी सूचीबद्ध छवि में मार्कर को बदलने पर ध्यान दूंगा, लेकिन अभी के लिए मैं केवल यह सुनिश्चित करना चाहता हूं कि मेरे मूल addLayers() और addMarker() फ़ंक्शन काम कर रहे हैं जैसा उन्हें करना चाहिए।

पढ़ने के लिए आपका बहुत-बहुत धन्यवाद!

0
user12097954 24 जून 2020, 03:19

1 उत्तर

सबसे बढ़िया उत्तर

(१) किसी वस्तु से मेरे मानचित्र में परतें जोड़ने का सबसे अच्छा तरीका क्या है?

आप जानते हैं कि हर चीज में, और सॉफ्टवेयर कोई अपवाद नहीं है, "सर्वश्रेष्ठ" जैसी कोई चीज नहीं है, केवल एक संदर्भ और आवश्यकता के लिए उपयुक्त है।

आपके मामले में, आपका तरीका ठीक काम करता है (कुछ समायोजन को छोड़कर) और अत्यधिक जटिल नहीं दिखता है, इसलिए यह ठीक लगता है।

(२) क्या परत में मार्कर जोड़ने का मेरा तरीका ठीक है?

यदि आप इसका जिक्र कर रहे हैं:

L.marker(xy(x, y)).addTo(map).bindPopup('test').addTo(layerGroups[layer]);

...तो addTo(map) addTo(layerGroups[layer]) के साथ बेमानी है

(३) वैसे भी जब मैं लेयरग्रुप्स [लेयर] = एल.लेयरग्रुप ()। एडटो (मैप) का उपयोग करता हूं; परत को डिफ़ॉल्ट रूप से छुपाने के लिए?

बस addTo(map) भाग को छोड़ दें?

अजीब तरह से आप "लेयर कंट्रोल [ऑब्जेक्ट ऑब्जेक्ट] कहते हैं।" का उल्लेख करते हैं, लेकिन इसके लिए मत पूछें। मुझे लगता है कि आपने या तो इसे हल कर लिया है या आप इसके लिए एक अलग प्रश्न पूछने की योजना बना रहे हैं (जैसा आपको करना चाहिए)।

1
ghybs 24 जून 2020, 08:16