关于javascript:如何将Google地图圈转换为GeoJSON?

How can I convert a google maps circle into GeoJSON?

我需要把谷歌地图圈转换成geojson。geojson不支持圆,所以我想生成一个n边多边形。我找到了一个生成正n边多边形的好方法,但是这需要在坐标系中定义半径,而在谷歌地图中,圆的半径是以米为单位定义的。


谷歌地图在几何学库中有一套方便的球面函数,这对我们来说非常容易。具体来说,我们需要computeOffset功能:

Returns the LatLng resulting from moving a distance from an origin in the specified heading (expressed in degrees clockwise from north).

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 ]
  };
}

默认情况下不包括几何图形库。您必须通过libraries参数专门请求它。