Как преобразовать круг google maps в GeoJSON?


Мне нужно преобразовать круг google maps в GeoJSON. GeoJSON не поддерживает окружности, поэтому я хочу создать N-сторонний полигон. Я нашелХороший метод для создания правильного N-стороннего многоугольника , но для этого требуется, чтобы радиус был определен в системе координат, в то время как радиус окружности в Google Maps определяется в метрах.

1 5

1 ответ:

Google Maps имеет удобный наборсферических функций в библиотеке геометрии, что делает это очень легким для нас. В частности, нам нужна функция computeOffset:

Возвращает Латлинг, полученный в результате перемещения на расстояние от начала координат в указанном направлении (выраженном в градусах по часовой стрелке с севера).

У нас есть начало координат (центр окружности) и расстояние (радиус окружности), поэтому нам просто нужно вычислить набор заголовков для точек исходя из того, сколько сторон мы хотим.

function generateGeoJSONCircle(center, radius, numSides){

  var points = [],
      degreeStep = 360 / numSides;

  for(var i = 0; i < numSides; i++){
    var gpos = google.maps.geometry.spherical.computeOffset(center, radius, degreeStep * i);
    points.push([gpos.lng(), gpos.lat()]);
  };

  // Duplicate the last point to close the geojson ring
  points.push(points[0]);

  return {
    type: 'Polygon',
    coordinates: [ points ]
  };
}

Библиотека геометрии по умолчанию не включена. Вы должны специально запросить его через параметр библиотек .