研究了一下Google Map上的根据经纬度求地球表面两点间距离的实现, 用java实现了一把,对我国境内的Beijing54, Xian80,WGS84三种坐标系的空间距离计算感觉这个实现是比较准确的。当然,这里只是个人的感觉而已。。。可能我还没有遇到那种对精度要求非常严格的地方,或许,本身我这个方式就是错误的。。。呵呵。。。这里只是作个记号先。。。各位达人多多指教
/**
*
* <p>
* Title: GeoUtils.java
* </p>
* <p>
* E-Mail: 176291935@qq.com
* </p>
* <p>
* QQ: 176291935
* </p>
* <p>
* Http: iaiai.iteye.com
* </p>
* <p>
* Create time: 2012-5-4 下午1:49:34
* </p>
*
* @author 丸子
* @version 0.0.1
*/
public class GeoUtils {
public enum GaussSphere {
Beijing54, // Krassovsky(北京54 采用)
Xian80, // IAG 75(西安80 采用)
WGS84, // WGS 84
}
private static double rad(double d) {
return d * Math.PI / 180.0;
}
/**
* 计算经纬度之间的距离
*
* @param lat1
* @param lng1
* @param lat2
* @param lng2
* @return
*/
public static double getDistance(double lng1, double lat1, double lng2, double lat2, GaussSphere gs) {
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 * (gs == GaussSphere.WGS84 ? 6378137.0 : (gs == GaussSphere.Xian80 ? 6378140.0 : 6378245.0));
s = Math.round(s * 10000) / 10000;
return s;
}
/**
* 计算经纬度之间的距离
*
* @param lat1
* @param lng1
* @param lat2
* @param lng2
* @return
*/
public static double getDistance(double lng1, double lat1, double lng2, double lat2) {
return getDistance(lng1,lat1,lng2,lat2,GaussSphere.WGS84);
}
}
分享到:
相关推荐
使用Haversine公式可以计算地球上任意两点间的直线距离(也称为大圆距离),这是基于球面三角学的。Haversine公式考虑了地球半径,并转换了经纬度的角度值。在Java代码中,这通常会涉及到以下步骤: - 将经纬度从...
总之,通过百度地图API,开发者能够方便地实现测量两点间行车距离的功能,这在许多应用场景中都非常实用,比如导航应用、物流配送、出行规划等。理解并掌握这一技术,有助于提升地图应用的用户体验和功能完整性。
这个源码可能是实现这一功能的一个示例。下面将详细讲解如何在Android中查询经纬度,并探讨相关的知识点。 首先,Android提供了`Location`类来处理地理位置信息,包括经度(longitude)和纬度(latitude)。`...
从“百度墨卡托坐标转百度经纬度离线实现(源码)”这个标题来看,提供的源码应包含一个函数或类,能够实现这种转换。源码可能包括以下关键步骤: 1. **坐标范围定义**:百度地图的墨卡托坐标系统有一个固定的左下...
这个"Android 在地图上显示两点间路径源码.zip"文件提供了一个实例,展示了如何在Android应用中实现从一个位置到另一个位置的路径绘制。以下是该源码项目涉及的主要知识点: 1. **Google Maps API**:项目依赖于...
在Java编程语言中,调用高德公交API可以实现丰富的公共交通功能,如线路查询、最优换乘策略计算、两点之间的距离测量(包括步行距离)。以下将详细介绍如何利用Java实现这些功能,以及高德公交API的基本原理和使用...
本资源“安卓GPS地图导航定位指南相关-1417663916406在地图上显示两点间路径源码.zip”提供了一个在地图上绘制两点之间路径的源码示例,有助于开发者理解和实现这一功能。 首先,我们要理解GPS(全球定位系统)在...
WGS84坐标系 GCJ02坐标系 BD09...S2计算点距离 计算地球上某个点是否在矩形区域内 计算点s2是否在圆中心为s1半径为capHeight的圆形区域内 判断点是否在任意形状内 计算两个区域是否有交集 求不同等级S2块包含的S2子块
在Android平台上,开发一款应用程序来显示地图上的两点间路径是一项常见的需求。这通常涉及到GPS定位、地图API的使用以及路径规划算法的实现。本源码资源着重于Android地图API的运用,结合Java编程语言,来展示如何...
要在地图上显示两点间的路径,我们需要使用`PolylineOptions`类。首先,确定起点和终点的经纬度坐标,然后调用`add()`方法添加这些点。设置线条颜色、宽度等属性后,通过`addPolyline()`方法将线段添加到地图上。 ...
标题中的“全国省市县数据+拼音+经纬度 源码.zip”表明这是一个包含中国所有省份、城市和县的数据集,同时提供了相应的拼音信息以及经纬度坐标。这些数据通常用于地理信息系统(GIS)、地图应用、定位服务或者数据...
标题中的“两个GPS导航定位源码”指的是包含两种方式实现GPS导航定位的代码,一种是通过GPS硬件接收器获取地理位置信息,另一种可能是利用网络服务(如Wi-Fi或蜂窝数据)进行定位。这两种方法在现代移动设备上的定位...
源码,有测试数据。内容:1、判断两点构成的直线是否相交;2、判断点是否落在由多点构成的区域内
在这个项目中,开发者可以学习到如何集成第三方地图库,如Google Maps API或者OpenStreetMap,以及如何使用算法计算两点之间的最短路径。 “JavaApk源码说明.txt”可能是对这两个源码项目的详细说明,包括了源码的...
**J2ME-GPS定位JAVA源码** J2ME(Java Micro Edition)是Java平台的一个...总之,J2ME-GPS定位Java源码提供了在J2ME平台上实现移动设备GPS定位的基础,通过理解和使用这些源码,开发者可以创建自己的位置感知应用。
5. **速度计算**:根据连续的位置更新,源码可能会通过计算两点间的距离和时间差来估算设备的速度。这通常涉及到地理坐标转换(如Haversine公式)和时间处理。 6. **UI设计**:Android应用的用户界面通常由XML布局...
8. **路径规划**:如果包含两个定位源码,可能其中一个涉及到了路径规划算法,如Dijkstra或A*算法,用于计算两点之间的最佳路线。 9. **UI设计**:源码中应该包含了展示地图、定位点、路线等元素的用户界面设计,...
3. **路径规划**:百度地图API提供了路径规划服务,可以计算两点之间的最佳路径,考虑交通状况、路况等因素。在Java Web应用中,开发者通过调用API获取路线信息,然后在页面上展示。 4. **定位服务**:应用能够接收...
【标题】"两个GPS导航定位源码.zip" 提供的是与GPS导航系统相关的源代码,可能包含两种不同的实现方式或技术。源代码是程序员用高级编程语言编写的文本文件,用于指导计算机执行特定任务。在本例中,重点是GPS(全球...