我需要将谷歌地图的圆形转换为GeoJSON。由于GeoJSON不支持圆形,因此我想生成一个N边形。我发现了一个很好的方法来生成正规的N边形,但这需要在坐标系中定义半径,而Google Maps中圆的半径是以米为单位定义的。
我需要将谷歌地图的圆形转换为GeoJSON。由于GeoJSON不支持圆形,因此我想生成一个N边形。我发现了一个很好的方法来生成正规的N边形,但这需要在坐标系中定义半径,而Google Maps中圆的半径是以米为单位定义的。
Google Maps在几何库中配备了一组方便的球形函数,使我们可以轻松实现此功能。具体来说,我们需要 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 ]
};
}