在网上查询过,写出来一个示例,能计算出来,但是不够精细,半径越大倒是没问题,小了就不行了,不太懂这个坐标计算,请教各位[抱拳]
借鉴的代码
/**
* 计算圆边坐标
* @param {Array<number>} lnglat 经纬度坐标数组
* @param {number} radius 半径
*/
function computedCircle(lnglat, radius) {
let r = 6371000.79
let phase = 2 * Math.PI / 360
let point = []
for (let i = 0; i < 360; i++) {
let dx = radius * Math.cos(i * phase)
let dy = radius * Math.sin(i * phase)
let lng = dx / (r * Math.cos(lnglat[1] * Math.PI / 180) * Math.PI / 180)
let lat = dy / (r * Math.PI / 180)
let newLng = lnglat[0] + lng
point.push([newLng, lnglat[1] + lat])
}
return point
}
半径一百
半径一千
上面用的的高德的遮罩 Polygon ,然后在中间扣出一个圆
也参考了楼主的计算方法,的确小半径时有锯齿。同事给我提供了另一种算法,可行。