使用vue-baidu-map组件如何判断点是否在圆形区域内?

项目使用百度地图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}

以上代码是根据两个坐标点的经纬度获取两点间距离的方法,对你应该会有所帮助,满意请采纳,谢谢。

参考资料:https://baike.baidu.com/item/%E7%90%83%E9%9D%A2%E8%B7%9D%E7%A6%BB%E5%85%AC%E5%BC%8F/5374455?fr=aladdin

那要根据经纬度来做计算了呀,

可以给后端当前的经纬度及半径,后端返回marker的数据的时候添加一个属性是否在半径内

.

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

圆心坐标xy减去点Xy坐标,是否小于等于圆半径