Ответ 1
Наконец, я нашел решение! Проблема заключалась в том, что encodePath
ожидает объект google.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
уменьшает числа после десятичной точки для сохранения байтов. Вы можете удалить или отредактировать этот параметр.