पत्रक मानचित्र पर ट्रिगर घटना क्लिक करें?


15

क्या किसी लीफलेट मैप पर किसी विशेष लेट / लोन पर एक क्लिक ईवेंट करना संभव है?

मैं एक पॉपअप प्रदर्शित करना चाहूंगा जो किसी विशेष स्थान पर एक बिंदु से जुड़ा हो।

मैंने कई संयोजनों की कोशिश की है map.fireEvent('click', latLon)और map.fire('click', latLon)मुझे इस दृष्टिकोण का वर्णन करने वाले उदाहरण या संदर्भ नहीं मिल सकते हैं। क्या यह कुछ ऐसा है जो किया जा सकता है?

एक दृष्टिकोण जो मैंने कोशिश की है (और जो काम करता है) वह है पत्रक में ऑब्जेक्ट को पहचानना और एक क्लिक इवेंट का उपयोग करके ट्रिगर करना layer[id].fireEvent('click')। हालाँकि, इसके लिए यह आवश्यक है कि मुझे ऑब्जेक्ट आईडी का पता हो और मैं इस क्लिक को चालू करने के लिए सिर्फ एक lat / lon का उपयोग करने में सक्षम होना चाहूंगा।


मैं क्लिक किए गए स्थान पर एक पॉपअप खोलना चाहता हूं और मैं इस स्थान पर कोई मार्कर जोड़ना या कोई नया पॉपअप नहीं जोड़ना चाहता। मैं जो करने की कोशिश कर रहा हूं वह एक विशेष लैट / लोन पर एक क्लिक इवेंट को आग लगाने के लिए है जहां एक बिंदु पहले से मौजूद है और पहले से मौजूद पॉपअप को ट्रिगर करने के लिए।

जवाबों:


21

मुझे लगता है कि आपकी सोच आपके विचार से अधिक जटिल है!

इसे इस्तेमाल करे:

var popLocation= new L.LatLng(-42.8585,147.2468);
var popup = L.popup()
    .setLatLng(popLocation)
    .setContent('<p>Hello world!<br />This is a nice popup.</p>')
    .openOn(map);

उत्कृष्ट प्रलेखन से खट्टा ।

मुझे पता है कि तुम अब क्या करना चाहते हो। यहां बताया गया है कि आप मनमाने ढंग से क्लिक किए गए स्थान पर पॉपअप कैसे खोल सकते हैं:

map.on('click', function(e) {        
        var popLocation= e.latlng;
        var popup = L.popup()
        .setLatLng(popLocation)
        .setContent('<p>Hello world!<br />This is a nice popup.</p>')
        .openOn(map);        
    });

अंतिम संपादन: मुझे गंभीरता से लगता है कि यदि आप किसी ऐसी चीज़ को प्राप्त करने के लिए 'क्लिक' इवेंट को फायर करना चाहते हैं जिसे आपके डिज़ाइन को देखने की आवश्यकता है। यदि आप वास्तव में इसे करना चाहते हैं, तो यह जावास्क्रिप्ट में संभव लगता है । यह एक जीआईएस सवाल नहीं है, हालांकि।


सुझाव के लिए धन्यवाद। क्या आप जानते हैं कि पॉपअप बनाए बिना, इसे ट्रिगर करना संभव है? मेरे मामले में मैं एक मानचित्र (पॉपअप को बांधते हुए) में 70 अंक जोड़ता हूं, और बाद में इनमें से एक पॉपअप को ट्रिगर करना चाहता हूं।
djq

आप सभी पॉपअप बना सकते हैं, उन्हें किसी भी तरह स्टोर कर सकते हैं / जहां, फिर उन्हें मानचित्र पर खोलें। प्रलेखन पर पढ़ें और इसे आज़माएं। मुझे समझ नहीं आ रहा है कि आप क्या करने की कोशिश कर रहे हैं। शायद आपको अपने प्रश्न को अपने अंतिम बिंदु को परिभाषित करने के लिए संपादित करना चाहिए?
एलेक्स लीथ

मैं समझता हूं कि पॉपअप को कैसे खोला जाए यदि यह किसी ऐरे में संग्रहीत है, तो मैं इसे मानचित्र पर एक स्थान पर क्लिक करने के आधार पर खोलने का प्रयास करना चाहता हूं। मैं कोशिश करूँगा और इस प्रश्न में स्पष्ट करूँगा।
djq

तो आप निकटतम पॉपअप को एक क्लिक पर खोलना चाहते हैं? या क्लिक की गई जगह पर एक पॉपअप खोलें? और आप मार्कर नहीं चाहते हैं?
एलेक्स लीथ

मैं क्लिक किए गए स्थान पर एक पॉपअप खोलना चाहता हूं और मुझे मार्कर नहीं चाहिए।
djq

1

मैं एक पत्रक में अन्य उत्तर का उपयोग कर रहा हूं ताकि उपयोगकर्ता मुझे मानचित्र में क्लिक किए गए स्थान के आधार पर फीचर अनुरोध भेजने की अनुमति दे सकें, जो तब उस स्थिति से लंबे समय से पहले से भरा हुआ Google प्रपत्र खोलता है। फिर उन बिंदुओं को शीटसी / टेबलटॉप का उपयोग करके मानचित्र पर दिखाया गया है। मैंने एक map.hasLayer (मेरी अनुरोध परत) को जोड़ा ताकि उपयोगकर्ता हमेशा पॉपअप नहीं देख रहा है जब नक्शा क्लिक किया जाता है:

    map.on('click', function(e) { 
    if (map.hasLayer(requests)) {
        var requestform = e.latlng;
        var formpopup = L.popup();
        .setLatLng(requestform)
        .setContent('<a href=" google form ' + e.latlng.lat + 
                    '" target="_blank">Form</a>') 
        .openOn(map);
    }
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.