问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何计算百度地图上两点间的距离

发布网友 发布时间:2022-04-24 03:33

我来回答

1个回答

热心网友 时间:2022-04-26 10:39

路线规划提供了获取路线距离的方法,见MKRoutePlan 类的 getDistance 方法。
如果是计算任意两点的距离,自2.0.0版本开始,Android SDK为开发者提供了计算距离的接口(DistanceUtil),具体使用方法如下:
1.GeoPoint p1LL = new GeoPoint(39971802, 116347927);
2.GeoPoint p2LL = new GeoPoint(39892131, 116498555);
3.double distance = DistanceUtil.getDistance(p1LL, p2LL);
如果开发者使用的是1.3.5及以前的版本,在计算任意两点之前的距离时,有如下两种方法:一种利用勾股定理计算,适用于两点距离很近的情况;一种按标准的球面大圆劣弧长度计算,适用于距离较远的情况。
package com.sogou.map.service;

public class test {
static double DEF_PI = 3.14159265359; // PI
static double DEF_2PI= 6.28318530712; // 2*PI
static double DEF_PI180= 0.01745329252; // PI/180.0
static double DEF_R =6370693.5; // radius of earth
public static double GetShortDistance(double lon1, double lat1, double lon2, double lat2)
{
double ew1, ns1, ew2, ns2;
double dx, dy, dew;
double distance;
// 角度转换为弧度
ew1 = lon1 * DEF_PI180;
ns1 = lat1 * DEF_PI180;
ew2 = lon2 * DEF_PI180;
ns2 = lat2 * DEF_PI180;
// 经度差
dew = ew1 - ew2;
// 若跨东经和西经180 度,进行调整
if (dew > DEF_PI)
dew = DEF_2PI - dew;
else if (dew < -DEF_PI)
dew = DEF_2PI + dew;
dx = DEF_R * Math.cos(ns1) * dew; // 东西方向长度(在纬度圈上的投影长度)
dy = DEF_R * (ns1 - ns2); // 南北方向长度(在经度圈上的投影长度)
// 勾股定理求斜边长
distance = Math.sqrt(dx * dx + dy * dy);
return distance;
}
public double GetLongDistance(double lon1, double lat1, double lon2, double lat2)
{
double ew1, ns1, ew2, ns2;
double distance;
// 角度转换为弧度
ew1 = lon1 * DEF_PI180;
ns1 = lat1 * DEF_PI180;
ew2 = lon2 * DEF_PI180;
ns2 = lat2 * DEF_PI180;
// 求大圆劣弧与球心所夹的角(弧度)
distance = Math.sin(ns1) * Math.sin(ns2) + Math.cos(ns1) * Math.cos(ns2) * Math.cos(ew1 - ew2);
// 调整到[-1..1]范围内,避免溢出
if (distance > 1.0)
distance = 1.0;
else if (distance < -1.0)
distance = -1.0;
// 求大圆劣弧长度
distance = DEF_R * Math.acos(distance);
return distance;
}
public static void main(String[] args) {
double mLat1 = 39.8882149161265; // point1纬度
double mLon1 = 116.34482860138908; // point1经度
double mLat2 = 39.88730142689885;// point2纬度
double mLon2 = 116.3350819866085;// point2经度
//double mLat2 = 39.90534402658571;// point2纬度
//double mLon2 = 116.34485555055439;// point2经度
double distance = GetShortDistance(mLon1, mLat1, mLon2, mLat2);
System.out.println(distance);
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑lol突然很卡怎么办啊电脑玩lolfps低怎么解决 危化品仓库有什么设备 香港中文大学2021-2022在河北,重庆最低录取分数线 ChaCheer 洽洽 南瓜子 盐焗味 500g-适用对象 老闫家小粒香南瓜子-适用对象 洽洽盐焗味南瓜子-适用对象 盐焗南瓜子里有添加明矾吗 老街口盐焗味南瓜子500g*2袋量大优惠休闲零食 一天走多少步可以减肥每天走多少步可以减肥 肉炖土豆需要炖多久时间 微信电脑文件管理默认位置是哪里 电脑微信文件存储路径 别人设置的电脑密码怎么解 自己曾经用过的可以被别人设置吗 怎样知道被别人设置成了滴滴安全联系人? 请问电脑被别人设置了用户名和密码,而我自己的用户名和密码什么都没有了,该怎么办 电脑被别人设置了密码怎么办 别人设置了不能添加好友,这个怎么办,知道的回复我一下,我很急 别人设置了哦陌生拦截我怎么破解? 别人设置了通话,打不进去电话怎么办 酥脆蛋黄小饼干的做法,酥脆蛋黄小饼干怎么做 怎么看被别人设置朋友圈权限? 别人设置了隐私怎么看? 被别人设置了健康使用手机,如何解除? 王者荣耀貂蝉kpl限定皮肤怎么得? 英雄杀签到即得貂蝉睡衣皮肤活动介绍 王者荣耀貂蝉圣诞恋歌体验卡可以重复兑换吗 王者荣耀2019圣诞节会有貂蝉的圣诞恋歌体验卡吗? 王者荣耀貂蝉kpl限定皮肤怎么获得 王者荣耀貂蝉kpl限定皮肤获取方法 王者荣耀貂蝉皮肤怎么得 貂蝉皮肤获得方法 刚刚申请的qq如何开通qq邮箱? 电脑微信默认存储位置在哪里 如何用百度地图测距离,急 新申请的qq号登入点击邮箱图标直接进入特色功能QQ邮箱帮助中心无法开 ... 如何利用百度地图api计算两点间的实际距离 如何注册新的qq邮箱? 请问怎样测量“百度地图”里两地间的距离? 请问,在开启百度地图中的画面的几百米是怎么意思怎么算的 百度地图怎么计算一个点到另一个覆盖物的垂直距离 如何计算百度地图上两点的距离? 我用QQ号申请的QQ邮箱,登录邮箱时用我的QQ密码,为什么总是提示密码错误?是不是邮箱密码要另外设 中国银行手机银行修改定向转账限额 中行手机银行修改定向转账限额如何操作? 中国银行网银每日最高限额只有2000. 请问有什么办法可以修改?请问这句话是什么意思 惠,怎么解释? 中国移动对你的流量速度进行了限制,按什么取消 真续航才是王道,BEIJING-EU5/Aion S城市通勤得程比PK 北汽EU5、比亚迪秦、广汽AionS三款车该如何选择? 听朋友说过锐度是做商用电磁炉的,想知道下他们那炉表面是什么材料做的,那种材料比较耐用 【车主点评:北汽新能源EU5是最适合我的电动车】