2012-09-11 22 views
10

नहीं है मैं इस तरह दिखता है के साथ एक सरणी में GeoPoints की एक सूची है:गूगल मैप्स एपीआई - ज्यामिति एन्कोडिंग - लेखन त्रुटि: a.lat एक समारोह

var coordinates = [[50.7, 6.7], [49.5, 7.0], ...] 

जब मैं कोड को कम करने के लिए इस्तेमाल करने की कोशिश encodePathexplained here के रूप में, मैं निम्नलिखित त्रुटि मिलती है:

TypeError: a.lat is not a function

मेरे कोड इस तरह दिखता है:

google.maps.geometry.encoding.encodePath(coordinates) 

कोई विचार?

उत्तर

14

अंततः मुझे समाधान मिला! समस्या यह थी कि encodePathgoogle.maps.LatLng ऑब्जेक्ट की अपेक्षा करता है न कि केवल GeoPoints

function encodeLatLngPolygon(array) { 

var polyOptions = { 
strokeColor: '#000000', 
strokeOpacity: 1.0, 
strokeWeight: 3 
    } 
    poly = new google.maps.Polyline(polyOptions); 

var path = poly.getPath(); 

for(var i=0;i<array.length;i++) { 
    var xyz = new google.maps.LatLng(parseFloat(array[i][0]).toFixed(2), parseFloat(array[i][1]).toFixed(2)); 
    path.push(xyz);    

} 

var code = google.maps.geometry.encoding.encodePath(path) 

return code; 
} 

toFixed बाइट्स को बचाने के लिए दशमलव बिंदु के बाद संख्या कम कर देता है:

यहाँ एक समारोह है जो एक इनकोडिंग स्ट्रिंग में ऊपर descripted एक की तरह एक सरणी बदल जाता है। आप इस पैरामीटर को हटा या समायोजित कर सकते हैं।