当前位置:首页 > 生态圈 > 正文内容

java如何定位每个坐标点(java地图定位)

abcsky887个月前 (10-25)生态圈91

本篇文章给大家谈谈

在日常开发中,我们难免要计算两个左边之间的距离,但是地图软件api的接口普遍要求我们必须要先将坐标点传递到他们服务器,然后计算出一个距离返还给我们,使用起来太不方便了, 下面是我整理的关于计算两个GPS坐标之间距离的方法。

java如何定位每个坐标点(java地图定位)

1.Lat1 Lung1 表示A点经纬度,Lat2 Lung2 表示B点经纬度;2.a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点经度之差;3.6378.137为地球半径,单位为千米;

计算出来的结果单位为千米从google maps的脚本里扒了段代码,是用来计算两点间经纬度距离private const double EAR网站推广有几个阶段TH_RADIUS = 6378.137;private static double rad(double d){。

return d * Math.PI / 180.0;}public static double GetDistance(double lat1, double lng1, double lat2, double lng2){

double radLat1 = rad(lat1);double radLat2 = rad(lat2);double a = radLat1 - radLat2;double b = rad(lng1) - rad(lng2);

double s = 2 网站推广有几个阶段* Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2) +Math.Cos(radLat1)Math.Cos(radLat2)Math.Pow(Math.Sin(b/2),2)));

s = s * EARTH_RADIUS;s = Math.Round(s * 10000) / 10000;return s;}在android中可采用如下代码获取距离public double getDistance(double lat1, double lon1, double lat2, double lon2) {

float[] results=new float网站推广有几个阶段[1];Location.distanceBetween(lat1, lon1, lat2, lon2, results);return results[0];

}在其他设备若没有类似android的Location的distanceBetween方法开采用如下代码获取这个计算得出的结果是英里,如果要转换成公里,需要乘以1.609344,若是海里需要乘以0.8684

double distance(double lat1, double lon1, double lat2, double lon2) {double theta = lon1 - lon2;double dist = Math.si网站推广有几个阶段n(deg2rad(lat1)) * Math.sin(deg2rad(lat2))

Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));dist = Math.acos(dist);dist = rad2deg(dist);

double miles = dist * 60 * 1.1515;return miles;}//将角度转换为弧度static double deg2rad(double degree) {return degree / 180 * Math.PI;

}//将弧度转换为角度网站推广有几个阶段static double rad2deg(double radian) {return radian * 180 / Math.PI;}计算方位角pab,其中lat_a, lng_a是A的纬度和经度; lat_b, lng_b是B的纬度和经度。

代码如下:private double gps2d(double lat_a, double lng_a, double lat_b, double lng_b){double d = 0;lat_a=lat_a*Math.PI/180;

lng_a=lng_a*Math.PI/180;lat_b=lat_b*Math.PI/180;lng_b=lng_网站推广有几个阶段b*Math.PI/180;d=Math.sin(lat_a)Math.sin(lat_b)+Math.cos(lat_a)Math.cos(lat_b)*Math.cos(lng_b-lng_a);

d=Math.sqrt(1-d*d);d=Math.cos(lat_b)*Math.sin(lng_b-lng_a)/d;d=Math.asin(d)*180/Math.PI;//d = Math.round(d*10000);

return d;}地图应用接口中使用的经纬度单位是NTU,您需要把其它单位的经纬度值转化过来,以下为常用的转换关系:与经纬度有关的基础知识:NTU 相当于十万分之一度如何网站推广有几个阶段计算经度方向距离比如: 点A的纬度为3995400,点B的纬度为3995300,则这两个点在沿着纬线的方向相差100米。

点A的经度为11695400,点B的经度为11695300,则这两个点在沿着经线的方向相差大约为77米, 该值的计算方法可以用近似公式:经度方向距离 = 经度差 * cos(纬度值) = 100 * cos(39) = 77米。

如何计算两点间距离比如:点A的经度为11695400,纬度为3995400点B的经度为11695300,纬度为3995300公式:两点间距离 = [ (A点经度 - B点经度)^2 + (A点纬度 - B点纬度)^2 ] ^ (1/2) = [ (11网站推广有几个阶段695400 - 11695300)^2+ (3995400 - 3995300)^2 ] ^(1/2) =(10000+10000) ^ (1/2) =141米。

扫描二维码推送至手机访问。

版权声明:本文由海南拓宏网络科技工作室发布,如需转载请注明出处。

本文链接:http://www.4blc.com/post/105.html

分享给朋友:

“java如何定位每个坐标点(java地图定位)” 的相关文章

大西洋飓风成因(1950年大西洋飓风季)

今天给各位分享 原标题:重蹈覆辙!大西洋第8场风暴将生成,新飓风紧随多里安的路径随着大西洋飓风季节接近高峰,热带风暴亨伯托可能很快成为大西洋第8场被命名的热带风暴目前正在搅动大西洋的热带系统可能很快变成热带风暴亨伯托,这种干扰正逐渐变得更有组织性,美国国家海洋和大气管理局(NOAA...

jvm的理解(jvm包括什么)

本文分享给大家的是: Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚比如本文我们要讨论的JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混。 可...

java类是什么意思(java类类型到底是什么)

今天给各位分享 在Java中,类是一种重要的程序组织结构,它是一种用来封装数据和方法的模板或蓝图类可以看作是一种自定义类型,用于描述具有相同属性和行为的对象Java是一种面向对象的编程语言,它的核心就是类和对象,因此类在Java中具有非常重要的地位。 Java中的类通常由以...

6、 [单选题] 计算机软件的著作权属于( )(计算机软件是著作权还是专利权)

本文分享给大家的是: 原标题:广州知识产权律师所:计算机软件是什么意思,著作财产权能分割吗 广州律师知识产权【律师解答】:计算机软件的概念是:指计算机系统中的程序及其文档,程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料程序必须装入机器内部才...

java 强引用,软引用,弱引用(java 弱引用 虚引用区别)

java 强引用,软引用,弱引用(java 弱引用 虚引用区别)

今天给各位分享 小Hub领读:深层次分析,有谁看懂了,点个赞看看?我一脸懵逼进来,一脸懵逼出去~作者:木枣粽子https://juejin.im/post/6854573215767855117在 Java 中总共有 4 中核心的引用类型——强引用、软引用、弱引用、虚引用。...

2021年最新peek颅骨修复价格(peek颅骨修补价格多少)

今天给各位分享 在人体骨骼组织中,颅骨是一块很坚硬的骨骼,它的作用更是举足轻重的,它支撑和保护着人体的头面部,维持着正常的颅内环境和颅内压可是,生活中有太多危险因素的存在都可能导致颅骨缺损,那样大脑就缺少了外在的保护,如果不及时补救危险会更大。 颅骨缺损会影响外形,患者会变...