2012-09-11 37 views
10

Tôi có một danh sách các GeoPoints trong một mảng với ngoại hình như thế này:Google Maps API - Geometry Encoding - Lỗi Loại: a.lat không phải là một chức năng

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

Khi tôi cố gắng sử dụng encodePath cho rút gọn mã như explained here, tôi nhận được lỗi sau:

TypeError: a.lat is not a function

mã của tôi trông như thế này:

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

Bất kỳ ý tưởng nào?

Trả lời

14

Cuối cùng tôi đã tìm ra giải pháp! Vấn đề là encodePath mong đợi một đối tượng google.maps.LatLng và không chỉ là GeoPoints.

Đây là một chức năng mà biến một mảng như một descripted trên vào một chuỗi mã hóa:

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; 
} 

Các toFixed làm giảm số sau dấu thập phân để lưu byte. Bạn có thể xóa hoặc điều chỉnh thông số này.

Các vấn đề liên quan