已知坐标经纬度为[107.522635, 30.656897];
根据当前坐标计算周边500米范围,并绘制圆形
不使用高德/百度地图api
期望结果
麻烦各位大神解答一下 万分感谢(已解决,感谢评论区大佬)
我看到有小可爱收藏了我的问题,这里把我的源码附上供参考
// lng 经度;lat 纬度;dis 距离(千米)
let r = 6371; //地球半径千米
let dis = 3; //3千米距离
let dlng = 2*Math.asin(Math.sin(dis/(2*r))/Math.cos(lat*Math.PI/180));
dlng = dlng*180/Math.PI; // 经度半径
let dlat = dis/r;
dlat = dlat*180/Math.PI; // 纬度半径
// 圆形每一度 都算出一个经纬度
for(let sides = 1; sides <= 360; sides++) {
var angle = Math.PI * ((1/sides) - (1/2));
var rotatedAngle, x, y;
var points = [];
for(var i=0; i<sides; ++i) {
rotatedAngle = angle + (i * 2 * Math.PI / sides);
x = lng + (dlng * Math.cos(rotatedAngle));
y = lat + (dlat * Math.sin(rotatedAngle));
points.push([x, y])
}
}
console.log('points=======',points)
//最后在地图上使用图表连线就可以啦!
得到结果
再次感谢评论区各位大佬的解答!
首先可以看这里的2.9,根据经纬度和距离求范围,https://segmentfault.com/a/11...
这个范围就是半径,然后使用下面的代码,利用半径和经纬度中心点求圆的路径,其中origin是中心点坐标,radius是半径,sides是圆上的点数,可以理解为精度,rotation是起点角度