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

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

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

本篇文章给大家谈谈

在日常开发中,我们难免要计算两个左边之间的距离,但是地图软件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://4blc.com/post/105.html

分享给朋友:

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

网上java培训课程(java线上培训和线下培训的区别)

今天给各位分享 Java开发工程师作为风口浪尖上的职业,以高薪、就业范围广等特点而受到大家青睐,越来越多人想要从事Java开发工作,培训就是转行途径之一如今线上培训也因其灵活便捷的特点吸引了许多有意向参加Java培训的人。 那么Java线上培训机构哪家好呢?今天“好程序员”...

辽宁省大学生就业指导局官网(辽宁省大学生就业管理局)

今天给各位分享 最后一期班预约中 为缓解大学毕业生就业压力,提高就业能力,有效解决大学生就业难的问题,辽宁省人力资源和社会保障厅实施离校未就业高校毕业生专业转换及技能提升培训政策,通过对未就业的大学生开展免费培训,培养大学生一技之长,满足企业用人需求,从而促进就业...

java面向对象基础知识(java面向对象的三大特征及实现方法)

本文分享给大家的是: 讲到面向对象编程思想不得不先了解面对过程,以及两种编程思想的区别面向过程(Procedure Oriented Programming)面向过程是以事件为中心的编程思想,就是分析出解决问题所需的步骤,然后一步一步去实现解决,面向过程是是模块化的思想方法。...

面向对象编程和面向过程编程的本质区别?(面向对象和面向过程的编程语言)

今天给各位分享 面向过程与面向对象是Java学习过程中遇到的难点问题,现将二者进行对比总结,以方便理解记忆和使用面向过程的优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;面向过程的缺点:没有面向对象易维护、易复用、易扩展。 面向对象的优点:易维护、...

java的主要特性有哪些?(java具有哪些特性)

本文分享给大家的是: 原标题:Java的特性有哪些?Java语言很火爆,从业前景很好,Java语言很受企业的欢迎当下Java编程语言已经成功进入我们的生活方方面面,也成了很多程序员学习IT的常用语言整理了一下关于Java语言的特性,帮助初学者更好的了解Java。 1、适合分...

java开发工程师前景(java开发能做什么工作)

本篇文章给大家谈谈 在.jar包的引入、xml的配置等方面这就是以前的jar包引入工程的方式——手动复制进来尤其是早期的java .jar版本,差个0.1甚至是0.01都能出大毛病,所以那时候我们作项目就是一个项目作完,作另一个项目时将上一个经过测试了的项目的jars包们考过来,...