Как преобразовать круг google maps в GeoJSON?
Мне нужно преобразовать круг google maps в GeoJSON. GeoJSON не поддерживает окружности, поэтому я хочу создать N-сторонний полигон. Я нашелХороший метод для создания правильного N-стороннего многоугольника , но для этого требуется, чтобы радиус был определен в системе координат, в то время как радиус окружности в Google Maps определяется в метрах.
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 ] }; }
Библиотека геометрии по умолчанию не включена. Вы должны специально запросить его через параметр библиотек .