首页 > 其他分享 >js百度地图计算两经纬度坐标点的距离

js百度地图计算两经纬度坐标点的距离

时间:2023-05-26 13:44:25浏览次数:52  
标签:rad 经纬度 地图 距离 js let 百度 Math

百度地图提供现成的方法,直接调用就可以了

Map类

getDistance(start:Point,end:Point) Number 返回两点之间的距离,单位是米。 (自 1.1 新增)

var map = new BMap.Map("container");
var point1 = new BMap.Point(lng1,lat1);
var point2 = new BMap.Point(lng2,lat2);
var distance = map.getDistance(point1,point2);

百度地图用的算法,应该就是球面距离的算法(大圆劣弧的距离),用的余弦函数,

百度地图开放平台 | 百度地图API SDK | 地图开发 

 

 

 自定义的方案: (注意经纬度的坐标系,百度是自己的纬度的坐标系,注意转换)

//计算两点之间直线距离
const algorithm = (point1, point2)=> {
	let [x1, y1] = point1;
	let [x2, y2] = point2;
    let Lat1 = rad(x1); // 纬度
    let Lat2 = rad(x2);
    let a = Lat1 - Lat2;//	两点纬度之差
    let b = rad(y1) - rad(y2); //	经度之差
    let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) 
        	+ Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(b / 2), 2)));
        //	计算两点距离的公式
    s = s * 6378137.0;//	弧长等于弧度乘地球半径(半径为米)
    s = Math.round(s * 10000) / 10000;//	精确距离的数值
    return s;

}

//	角度转换成弧度
const rad =(d) =>{
    return d * Math.PI / 180.00;
};

  

 

标签:rad,经纬度,地图,距离,js,let,百度,Math
From: https://www.cnblogs.com/porter/p/17434497.html

相关文章

  • js调用摄像头拍照及扫描二维码
    注:js调用摄像头需要localhost域或者https,否则会报无权限一引用jsGithub:https://github.com/mebjas/html5-qrcode<scriptsrc="html5-qrcode.min.js?v=2"></script>二html页面<!DOCTYPEhtml><html><head><title>Instascan</titl......
  • C#与Node JS互相实现DES加密解密
    具体的加密算法可以可自行查询其区别,这里只是抛砖引玉,大部分加密方法基本都能通过改变传入参数来实现。C#相关类文档: System.Security.Cryptography命名空间|MicrosoftLearnNodeJS相关文档:Crypto|Node.jsv16.20.0Documentation(nodejs.org) C#加密函数:1using......
  • JS逆向实战14——猿人学第二题动态cookie
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!目标网站https://match.yuanrenxue.cn/match/2网站分析首先已经告诉了我们这个网站是动态cookie,所以......
  • js获取抖音视频信息配合服务器自动下载
    引入axios方便发送请求解析当前页面获取视频信息把数据发送到服务器注意端口号,1024以上浏览器可能会拦截,认为不安全重复发送,防止连续重复发送,手动清除定时器点击查看代码//导入axios.posletscript=document.createElement('script');script.src="https://unpkg.......
  • js对象遍历和拷贝
    letobj={name:'user1',age:12,gender:'man'}for(letattrinobj){console.log(attr,obj[attr])}constkeys=Object.keys(obj)constvalues=Object.values(obj)console.log(Object.keys(obj))console.log(Object.values(obj))   letobj......
  • 解决npm npm does not support Node.js
    原因:node.js和npm版本不对应参考官网版本对应(https://nodejs.org/zh-cn/download/releases/),下载对应的node.js版本和更新npm版本npmupdate常用命令使用 npm-check检查更新npminstall-gnpm-checknpm-check2.npm-upgrade更新......
  • Springboot集成百度地图实现定位打卡功能
    打卡sign表sqlCREATETABLE`sign`(`id`int(11)NOTNULLAUTO_INCREMENT,`user`varchar(255)COLLATEutf8mb4_unicode_ciDEFAULTNULLCOMMENT'用户名称',`location`varchar(255)COLLATEutf8mb4_unicode_ciDEFAULTNULLCOMMENT'打卡位置',`......
  • 揭秘百度IM消息中台的全量用户消息推送技术改造实践
    本文内容由百度技术团队分享,原题“基于公共信箱的全量消息实现”,为了帮助理解,有较多修订、内容重组和重新排版。1、引言百度的IM消息中台为百度APP以及厂内百度系产品提供即时通讯的能力,提供包括私聊、群聊、聊天室、直播弹幕等用户沟通场景,并帮助业务通过消息推送触达用户。如......
  • js数据解构
    1、变量比值多可以设置变量默认值 解构let[a,b,c,d='aaa']=[12,34,24]2、变量比值少可以用剩余参数解构let[a,...b]=[11,22,44,55]//a11b[22,44,55]3、按需赋值let[a,,b]=[5,6,9]4、数组嵌套解构let[a,b,arr]=[1,2,[5,8,9]]let[a,b,[c,d,e]]=[1,2,[5,8,9]]5、......
  • Nodejs 应用编译构建提速建议
    编译构建的整体过程拉取编译镜像拉取缓存镜像拉取项目源码挂载缓存目录执行编译命令(用户自定义)持久化缓存上传编译镜像为什么在本地构建就快,但编译机上很慢在编辑机上每次的构建环境都是全新的,完成一次构建比本地需要多一些步骤:现成的全局包缓......