API Карт Google - Кодирование геометрии - TypeError: a.lat не является функцией

У меня есть список GeoPoints в массиве, который выглядит так:

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

Когда я пытаюсь использовать encodePath для указания кода как описанного здесь, я получаю следующую ошибку:

TypeError: a.lat не является функцией

Мой код выглядит следующим образом:

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

Любые идеи?

Ответ 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 уменьшает числа после десятичной точки для сохранения байтов. Вы можете удалить или отредактировать этот параметр.