2010-07-19 15 views
5

में पॉलीलाइन की सीमाएं प्राप्त करना क्या Google मानचित्र API v3 का उपयोग करके पॉलीलाइन के बाध्यकारी बॉक्स को खोजने का कोई आसान तरीका है? मैं एक प्रोजेक्ट पर काम कर रहा हूं जहां मुझे सीमाओं को अपडेट करने की आवश्यकता है क्योंकि डेटा को मानचित्र से जोड़ा और हटा दिया गया है। यह सिर्फ bd.extend (बिंदु) करके बहुत आसान है जहां बीडी बाध्य वस्तु है और बिंदु एक LatLng ऑब्जेक्ट है। समस्या यह है कि जब मैं डेटा को हटाना शुरू करता हूं, तो मैं इसे सीमाओं को बदलना और ज़ूम इन करना चाहता हूं। क्या कोई ऐसा फ़ंक्शन है जो ऐसा कर सकता है या मुझे अपने लिए कुछ लिखना होगा?Google मानचित्र API v3

उत्तर

4

v2 APIGPolyline.getBounds() इस तरह से करने के लिए विधि थी। हालांकि ऐसा लगता है कि v3 API में कोई समकक्ष विधि नहीं है।

ऑब्जेक्ट बदलते समय अधिसूचित होने के लिए आप अपने PolylineMVCObject की changed संपत्ति को ओवरराइड करके इसे संभालना चाहते हैं। फिर आप सुझाए गए LatLngBounds.extend() विधि का उपयोग करके बाउंडिंग बॉक्स की गणना कर सकते हैं।

मुझे लगता है कि Google ने जानबूझकर एपीआई लाइटवेट रखने के प्रयास में v3 एपीआई से ऐसी विधियों को छोड़ दिया है। एक समान चूक discussed a couple of days ago on Stack OverflowGMap2.clearOverlays() विधि थी।

7

ओनेपेली के समाधान पर विस्तार, यह विस्तारित 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 विधि में लोड किया जाता है, तो बाद में जोड़े जाने की जरूरत है।