में पॉलीलाइन की सीमाएं प्राप्त करना क्या Google मानचित्र API v3 का उपयोग करके पॉलीलाइन के बाध्यकारी बॉक्स को खोजने का कोई आसान तरीका है? मैं एक प्रोजेक्ट पर काम कर रहा हूं जहां मुझे सीमाओं को अपडेट करने की आवश्यकता है क्योंकि डेटा को मानचित्र से जोड़ा और हटा दिया गया है। यह सिर्फ bd.extend (बिंदु) करके बहुत आसान है जहां बीडी बाध्य वस्तु है और बिंदु एक LatLng ऑब्जेक्ट है। समस्या यह है कि जब मैं डेटा को हटाना शुरू करता हूं, तो मैं इसे सीमाओं को बदलना और ज़ूम इन करना चाहता हूं। क्या कोई ऐसा फ़ंक्शन है जो ऐसा कर सकता है या मुझे अपने लिए कुछ लिखना होगा?Google मानचित्र API v3
उत्तर
v2 APIGPolyline.getBounds()
इस तरह से करने के लिए विधि थी। हालांकि ऐसा लगता है कि v3 API में कोई समकक्ष विधि नहीं है।
ऑब्जेक्ट बदलते समय अधिसूचित होने के लिए आप अपने Polyline
MVCObject
की changed
संपत्ति को ओवरराइड करके इसे संभालना चाहते हैं। फिर आप सुझाए गए LatLngBounds.extend()
विधि का उपयोग करके बाउंडिंग बॉक्स की गणना कर सकते हैं।
मुझे लगता है कि Google ने जानबूझकर एपीआई लाइटवेट रखने के प्रयास में v3 एपीआई से ऐसी विधियों को छोड़ दिया है। एक समान चूक discussed a couple of days ago on Stack OverflowGMap2.clearOverlays()
विधि थी।
आप अपनी खुद की GetBounds विधि जोड़ने के लिए पॉलीलाइन क्लास भी बढ़ा सकते हैं। इसे कैसे करें के लिए google maps api v3: add point on polyline beetwen two existing points on click polyline event का संदर्भ लें।
ओनेपेली के समाधान पर विस्तार, यह विस्तारित getBounds() विधि है जिसका उपयोग मैं वी 2 एपीआई से कार्यक्षमता को फिर से बनाने के लिए कर रहा हूं। यह मेरी परियोजना में पूरी तरह से काम कर रहा है।
google.maps.Polyline.prototype.getBounds = function() {
var bounds = new google.maps.LatLngBounds();
this.getPath().forEach(function(item, index) {
bounds.extend(new google.maps.LatLng(item.lat(), item.lng()));
});
return bounds;
};
बस याद रखें कि यह API, JavaScript अपने init विधि में लोड किया जाता है, तो बाद में जोड़े जाने की जरूरत है।