项目使用百度地图vue-baidu-map组件,需求是要根据半径画出圆形范围并判断圆形区域内marker点的数量
// 根据经纬度获取两点间距离
function getDistance(point1, point2) {
// 经纬度转换成三角函数中度分秒形式
let radLat1 = point1.lat * Math.PI / 180
let radLat2 = point2.lat * Math.PI / 180
let radLng1 = point1.lng * Math.PI / 180
let radLng2 = point2.lng * Math.PI / 180
let diffLat = radLat1 - radLat2
let diffLng = radLng1 - radLng2
// 球面两点间距离公式
let distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(diffLat/2),2) +
Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(diffLng/2),2)))
distance *= 6378.137 // 地球赤道半径
// 换算成公里数输出
distance = Math.round(distance * 10000) / 10000
return distance
}
// point1 = {lat: number, lng: number}
// point2 = {lat: number, lng: number}
以上代码是根据两个坐标点的经纬度获取两点间距离的方法,对你应该会有所帮助,满意请采纳,谢谢。
那要根据经纬度来做计算了呀,
可以给后端当前的经纬度及半径,后端返回marker的数据的时候添加一个属性是否在半径内
.
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
圆心坐标xy减去点Xy坐标,是否小于等于圆半径