How can I convert a google maps circle into GeoJSON?
我需要把谷歌地图圈转换成geojson。geojson不支持圆,所以我想生成一个n边多边形。我找到了一个生成正n边多边形的好方法,但是这需要在坐标系中定义半径,而在谷歌地图中,圆的半径是以米为单位定义的。
谷歌地图在几何学库中有一套方便的球面函数,这对我们来说非常容易。具体来说,我们需要
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参数专门请求它。