Java计算两个经纬度之间的距离公式,外加百度地图高德地图转换,和保留小数

Java开发之百度地图1 :计算两个地点之间的距离,获取经纬度所在城市 package com.********.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.UR... 阅读详情

在网上看到了很多两个坐标之间的距离公式,也都亲自测试了,有很多都不可以用,后来找到一个比较好的距离算法,分享给大家
经纬度两点之间的距离公式

public class MapUtils {
	private static double rad(double d) {
		return d * Math.PI / 180.00; // 角度转换成弧度
	}

	/*
	 * 根据经纬度计算两点之间的距离(单位米)
	 */
	public static double algorithm(double longitude1, double latitude1, double longitude2, double latitude2) {

		double Lat1 = rad(latitude1); // 纬度

		double Lat2 = rad(latitude2);

		double a = Lat1 - Lat2;// 两点纬度之差

		double b = rad(longitude1) - rad(longitude2); // 经度之差

		double 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 * 10000d) / 10000d;// 精确距离的数值
		// 四舍五入 保留一位小数
		//DecimalFormat df = new DecimalFormat("#.0");

		return s;

	}
}

当然,我做的那个项目,刚开始是百度地图,但是很多API不好用,高德比较新,然后前台转高德了,所以数据库中的坐标也跟着要转换,后来在网上看到很多转换的五花八门,测试之后也找到好用的一个,但是我还是建议不要转换,因为转换就会有误差,坐标这种东西误差很吓人的,所以尽量在存储时候和取出来的时候用相同的坐标,废话不多说,直接上代码

百度高德相互转换

private double[] gaoDeToBaidu(double gd_lon, double gd_lat) {
    double[] bd_lat_lon = new double[2];
    double PI = 3.14159265358979324 * 3000.0 / 180.0;
    double x = gd_lon, y = gd_lat;
    double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * PI);
    double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * PI);
    bd_lat_lon[0] = z * Math.cos(theta) + 0.0065;
    bd_lat_lon[1] = z * Math.sin(theta) + 0.006;
    return bd_lat_lon;
}

private double[] bdToGaoDe(double bd_lat, double bd_lon) {
    double[] gd_lat_lon = new double[2];
    double PI = 3.14159265358979324 * 3000.0 / 180.0;
    double x = bd_lon - 0.0065, y = bd_lat - 0.006;
    double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * PI);
    double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * PI);
    gd_lat_lon[0] = z * Math.cos(theta);
    gd_lat_lon[1] = z * Math.sin(theta);
    return gd_lat_lon;
 }

两个方法,拿去粘贴就可以用,后来发现小数点位数不对,几番周折,有保留的几个小数点
保留小数

double a = 1.34566777;
DecimalFormat df1 = new DecimalFormat("0.000000");//不够6位补零输出
DecimalFormat df2 = new DecimalFormat("0.######");//不够6位以实际位数输出 你要哪个?   
System.out.println(df2.format(a)); //输出 1.345668

这次分享先就这么多吧,第一次写博客,以后会努力加油写自己遇到的坑的,嗯,就这样吧

JAVA将北斗定位系统坐标系用于高德地图或百度地图 常用坐标系介绍 WGS-84(GPS) 国际标准,一般从国际标准的GPS设备获取的坐标都是WGS-84,以及国际地图提供商使用的坐标系。 GCJ-02 中国标准,国测局02年发布的坐标系。又称“火星坐标”。在中国,必须至少使用“GCJ-02”对地理位置进行首次加密。比如谷歌中国、高德、腾讯都在用这个坐标系。 BD-09 百度标准,在“GCJ-02”的基础上进行二次加密。 北斗定位系统坐标 如果有对接过北斗定位系统的小伙伴可能会发现一个问题,北斗坐标经纬度好像都被乘了100? $GNRMC, 阅读详情

相关推荐

高德/腾讯地图坐标转百度地图坐标的Java实现(附完整代码)

本文详细解析了高德、腾讯地图使用的GCJ-02坐标系与百度地图BD-09坐标系的差异,并提供了完整的Java坐标转换实现方案。通过核心算法代码、工程化封装及Spring Boot集成示例,帮助开发者解决多地图服务集成时的数据漂移问题,确保LBS应用定位精准。

o5p6q的博客 140

java计算两个经纬度之间的距离

前一阵项目中,有一个需求:是查找附近的人,其实就是查询某个距离内有多少用户。实现方式还是比较简单的,之前使用GeodeticCalculator计算经纬度误差在高德上与腾讯有点偏差,首先用户在APP上开启定位权限,将自己的经纬度都存储到数据库,然后以此经纬度为基准,以特定距离为半径,查找此半径内的所有用户。 那么,如何java如何计算两个经纬度之间的距离呢?有两种方法,误差都在接受范围之内。 1、基于googleMap中的算法得到两经纬度之间的距离,计算精度与谷歌地图的距离精度差不多。 /**

baidu_37366055的博客 1万+

高德/腾讯地图与百度地图坐标转换实战指南

本文详细解析了高德、腾讯地图与百度地图之间的坐标转换原理与实现方法。针对GCJ-02与BD-09坐标系的差异,提供了Java实现代码及实际应用中的注意事项,帮助开发者解决不同地图服务商坐标偏差问题,提升位置服务的准确性。

weixin_29291573的博客 315

Java:计算地球上两个经纬度坐标之间的距离-geodesy和geotools实现

*** 地球半径,单位m/*** 根据经纬度,计算两点间的距离* @param longitude1 第一个点的经度* @param latitude1 第一个点的纬度* @param longitude2 第二个点的经度* @param latitude2 第二个点的纬度* @return 返回距离,单位m// 纬度 double lat1 = Math . toRadians(latitude1);

彭世瑜的博客 7639

从GPS到百度地图:手把手教你实现WGS84到BD09坐标的精准转换

本文详细解析了GPS设备使用的WGS84坐标系与百度地图BD09坐标系的差异,提供了从WGS84到GCJ02再到BD09的完整、精准转换算法与代码实现。文章手把手教你解决坐标偏移问题,涵盖原理、多语言工程化方案及常见避坑指南,是开发LBS应用、处理地理信息数据的实用指南。

weixin_29008805的博客 517

Java实战:5分钟搞定GPS坐标转高德地图(附完整代码)

本文针对国内地图开发中GPS坐标与高德地图坐标不匹配的常见问题,提供了完整的Java实战解决方案。文章深入浅出地解释了WGS-84与GCJ-02坐标系差异,并附上经过验证、开箱即用的Java坐标转换工具类代码,帮助开发者快速实现精准的坐标转换,解决位置“漂移”难题。

weixin_29012677的博客 187

百度地图java计算2个坐标建距离_Java开发之百度地图2 :计算两地之间的距离

package com.***********.util;import java.awt.geom.Point2D;/*** 百度工具类** @author qyx**/public class BaiduUtil2 {public static void main(String[] args) {try {// 太原Point2D pointDD = new Point2D.Double(112...

weixin_36256707的博客 593

通过两点经纬度,计算他们之间的距离 - JAVA

通过两点经纬度,计算他们之间的距离 - JAVA

根据两点经纬度坐标计算距离

在开发中用到定位和地图功能的都会知道位置信息会有多个坐标系来表示,而不同地图厂商使用的坐标系也可能是不一样的,web、Android以及iOS可能使用了不同厂家的地图,这就出现了在不同坐标系间转换坐标的需求。然而一些地图SDK给出的地图坐标转换接口的实现是在服务器进行的,那么这些接口的调用不但会发起网络请求而效率上也会非常的慢,无论是对于客户端离线操作还是在自己的服务后台批量转换坐标数据,都需要本地实现坐标转换的算法来满足快速运算的需求。 GPS坐标比较 坐标系 解析 使用地图 WGS84

小马的博客 1570

Java计算两个经纬度点之间距离算法

Java计算两个经纬度点之间距离(以米为单位)算法, 纯Java代码, 可供参考。 在具体项目中使用过。

Starlink卫星动力学系统仿真建模前传1-时空系统介绍

对于在轨道上运动的航天器由于速度接近第一宇宙速度,为了获取准确的位置信息对时间的精度要求极高,为了准确描述航天器的运动规律,本节对卫星仿真建模中用到的各种时间系统进行介绍。卫星轨道平面为坐标平面,坐标原点位于卫星系统质心,轴由卫星系统质心指向地心(当地垂线),轴在轨道面内垂直于轴并指向卫星的前进方向,轴同、轴构成右手系,指向轨道面负法线方向。不同坐标系下的建立的运动形式与复杂程度不同,会直接影响运动方程的求解繁简程度,因此,选取适当的坐标系具有重要的意义。定义星体坐标系,该坐标系简记为系,与卫星本体固连。

xspace的博客 1432

GPS经纬度纠偏转换-WGS84、GCJ02、BD09

GPS经纬度纠偏转换 WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系。 谷歌地图采用的是WGS84地理坐标系(中国范围除外); GCJ02坐标系:即火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。 谷歌中国地图、高德地图、腾讯地图采用的是GCJ02地理坐标系; BD09坐标系:百度地图使用坐标系,GCJ02坐标系经加密后的坐标系; ​ 有时候会需要用到真实经纬度,所以上网找了一下

qq_41661878的博客 5000

中兴U30air随身WiFi刷机全攻略:从ABD开启到系统调试(附工具包)

本文提供中兴U30air随身WiFi刷机全攻略,从ADB开启到系统调试的详细步骤,包括必备工具清单、ADB调试模式解锁、Bootloader解锁及自定义ROM刷入与调优。适合技术爱好者深度定制设备,提升网络性能和功能扩展。

weixin_29235923的博客 1925

Java 百度、高德、84坐标系经纬度的相互转换

public class LngLonUtil { public static double pi = 3.1415926535897932384626; public static double x_pi = 3.14159265358979324 * 3000.0 / 180.0; public static double a = 6378245.0; ...

liuwadan的博客 1万+

WPF插件架构-如何动态加载封装好的第三方DLL的界面

插件架构中如何自动加载第三方DLL中的UI界面

lg24k的博客 1881

如何设计一个低代码平台

近些年来,低代码发展火热,各种低代码平台如雨后春笋纷纷崛起,这些平台各定位不同,优劣不同,用户的选择空间很大。那么,如果用户想从零开始设计一个低代码平台,该如何做呢?

Jarod_Chou的博客 8256

坐标计算距离公式 火星坐标系_WGS84、GCJ02、BD09地图坐标系间的坐标转换及坐标距离计算...

坐标转换转载来源:http://nightfarmer.github.io/2016/12/01/GPSUtil/坐标系解释使用地图WGS84地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,最基础的坐标,谷歌地图在非中国地区使用的坐标系GPS/谷歌地图卫星GCJ02火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。并要求在中国使用的地...

weixin_39822493的博客 1673

第1部分 基础算法(提高篇)--第2章 二分与三分1439:【SCOI2010】传送带

1439:【SCOI2010】传送带 时间限制: 2000 ms 内存限制: 65536 KB 提交数: 372 通过数: 212 【题目描述】 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间。 【输入】 输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By 第二行是4个整

zqhf123的博客 834

关于地图上两个点距离问题(知道经纬度)

一开始,把代码写成了提示. Math.sqrt((经度1-经度2)* (经度1-经度2)+(纬度1-纬度2)*(纬度1-纬度2))sqrt是求平方差的函数这就是平面上两点的距离,然而,测试的时候发现...距离不超过几毫米原因:经纬度不是平面坐标,它的单位不是米正确方法:public static double algorithm(double longitude1, double latitude...

莫言情难忘的博客 1892

DiffusionDrive实战:如何用截断扩散模型3个月搞定自动驾驶轨迹规划(附代码)

本文详细介绍了如何利用DiffusionDrive截断扩散模型,在三个月内快速构建端到端的自动驾驶轨迹预测系统。内容涵盖从环境搭建、数据处理、模型架构解析到训练调参和推理优化的完整实战流程,并提供了关键代码示例,旨在帮助开发者高效实现高质量的自动驾驶轨迹规划。

weixin_35578748的博客 143

C++ (week6、7):Linux系统编程4:网络

Linux网络:计算机网络概述、TCP协议、Socket编程、IO多路复用机制(select、epoll)、HTTP协议、进程池、线程池、大文件网络传输问题

Edward2022的博客 1429

地址获得经纬度--再转变成两点间距离

最近研究了一下如何根据地址查询获得经纬度,然后再由经纬度获得两点间距离的问题。 (1)首先如何根据地址去查询经纬度 (2)获得了经纬度如何在计算两点之间的距离 (1) 首先第一个问题,如何根据地址去查询经纬度。这应该和GPS定位有关吧,GPS是美国等使用的全球定位系统;而中国的有北斗;而欧洲的也有一套定位的东西。使用定位系统的话,一般可能是根据三颗或者是4颗以上的卫星才能定位,这是GPS的

long636的专栏 1888

基于MATLAB的PDT DMR物理层仿真

PDT DMR物理层仿真的目标是评估系统的误码率(Bit Error Rate,BER),以及验证和优化各种调制方案、编码方案和信道模型。下面将介绍如何进行PDT DMR物理层的仿真,并提供相应的MATLAB源代码。通过上述步骤,我们可以进行基于MATLAB的PDT DMR物理层仿真,并评估系统的性能。根据实际需求,我们可以修改仿真参数和添加更复杂的信道模型,以更全面地评估系统性能。最后,我们可以将仿真结果进行可视化和分析。首先,我们需要设置仿真的参数,包括调制方案、编码方案、信道模型和信噪比等。

TechPulseZ的博客 456

java百度转高德,百度、高德、Googe经纬度转换

private static double x_pi = 3.14159265358979324 * 3000.0 / 180.0;/*** 中国正常坐标系GCJ02协议的坐标,转到 百度地图对应的 BD09 协议坐标** @param lat* @param lng*/public static void Convert_GCJ02_To_BD09(double lat, double lng)...

weixin_42464697的博客 485

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java实战:多坐标系经纬度转换工具类设计与实现

本文详细介绍了Java中多坐标系经纬度转换工具类的设计与实现。针对WGS84、GCJ-02、BD-09及CGCS2000等常见坐标系,文章拆解了核心转换算法,并利用proj4j库处理专业转换。通过完整的工具类设计、工程化考量及Spring Boot集成示例,为开发者提供了高效、可复用的坐标转换解决方案,有效解决了地图应用开发中因坐标系差异导致的位置偏移问题。

day7的博客 430

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

下一篇: 查询日期报错问题,invalid comparison: java.util.Date and java.lang.String
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值