꧁꧂神仙-_-爸爸꧁꧂ 2021-06-03 11:08 采纳率: 50%
浏览 558
已采纳

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

项目使用百度地图vue-baidu-map组件,需求是要根据半径画出圆形范围并判断圆形区域内marker点的数量

  • 写回答

5条回答 默认 最新

  • CSDN专家-林老师 2021-06-05 16:09
    关注
    // 根据经纬度获取两点间距离
    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?