如何将Google地图圈转换为GeoJSON?

时间:2014-03-06 16:14:38

标签: javascript google-maps-api-3 geojson

我需要将Google地图Circle转换为GeoJSON。 GeoJSON不支持圆圈,因此我想生成N边多边形。我发现a nice method for generating a regular N-sided polygon但是要求在坐标系中定义半径,而Google地图中圆的半径以米为单位定义。

1 个答案:

答案 0 :(得分:15)

Google地图在几何库中有一套方便的spherical functions,这对我们来说非常简单。具体来说,我们需要computeOffset函数:

  

返回从指定标题中的原点移动距离得到的LatLng(以北方向顺时针方向表示)。

我们有原点(圆的中心)和距离(圆的半径),所以我们只需要根据我们想要的边数计算一组点的标题。

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

默认情况下不包含geometry library。您必须通过libraries parameter明确要求。