`
happyqing
  • 浏览: 3194007 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java版谷歌地图计算两经纬度坐标点的距离

阅读更多
球面上两点间大圆劣弧的距离
public class GoogleMapHelper {

	private static double EARTH_RADIUS = 6378.137;	//地球半径
	//将用角度表示的角转换为近似相等的用弧度表示的角 Math.toRadians
	private static double rad(double d)
	{
	    return d * Math.PI / 180.0;
	}

	/**
	 * 谷歌地图计算两个坐标点的距离
	 * @param lng1	经度1
	 * @param lat1	纬度1
	 * @param lng2	经度2
	 * @param lat2	纬度2
	 * @return 距离(千米)
	 */
	public static double getDistance(double lng1, double lat1, double lng2, double lat2)
	{
	    double radLat1 = Math.toRadians(lat1);
	    double radLat2 = Math.toRadians(lat2);
	    double a = radLat1 - radLat2;
	    double b = Math.toRadians(lng1) - Math.toRadians(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;
	}
	
	public static void main(String[] args) {
		long b = System.currentTimeMillis();
		for(int i=0; i<1000000; i++){
			getDistance(116.403933,39.914147, 116.403237,39.927919);
		}
		System.out.println("耗时:"+(System.currentTimeMillis()-b)+"毫秒"); //耗时:461毫秒
		double dist = getDistance(116.403933,39.914147, 116.403237,39.927919);
		System.out.println("两点相距:" + dist + "千米");	//两点相距:1.0千米

	}
}

 

js版谷歌地图计算两经纬度坐标点的距离

http://happyqing.iteye.com/blog/2236105

 

参考:

球面上两点间距离的求法
http://wenku.baidu.com/link?url=kWYaVUDABbteHXWvbHiJQTddK0J8R06cHzheHtHgTcgx7ISmF7UZ-JwBVgI73m1BUgz8Xlr9kPl5OWlVkJl9nPUhc4YuZyDwJUnKZILENTW

两点间的球面距离公式
http://blog.163.com/scuqifuguang@126/blog/static/1713700862011217114939980/

计算两个经纬度之间的距离
http://blog.csdn.net/musicrabbit/article/details/6717852

根据2个经纬度点,计算这2个经纬度点之间的距离(通过经度纬度得到距离)
http://www.cnblogs.com/softfair/p/distance_of_two_latitude_and_longitude_points.html

球面上任意两点之间的距离计算公式可以参考维基百科上的下述文章。

值得一提的是,维基百科推荐使用Haversine公式,理由是Great-circle distance公式用到了大量余弦函数, 而两点间距离很短时(比如地球表面上相距几百米的两点),余弦函数会得出0.999...的结果, 会导致较大的舍入误差。而Haversine公式采用了正弦函数,即使距离很小,也能保持足够的有效数字。 以前采用三角函数表计算时的确会有这个问题,但经过实际验证,采用计算机来计算时,两个公式的区别不大。 稳妥起见,这里还是采用Haversine公式。

 

分享到:
评论

相关推荐

    java根据两点经纬度计算距离

    在Java编程中,根据两点的经纬度来计算距离是一项常见的任务,特别是在地理信息系统(GIS)或者定位服务相关的应用中。这个任务通常涉及到地球表面的距离计算,因为经纬度是地球坐标系统的一部分。以下是一些相关的...

    经纬度计算距离、方位角等java源码

    在IT行业中,尤其是在地理信息系统(GIS)或者地图应用开发中,计算地球上两点之间的距离和方位角是一项基础且重要的任务。本篇文章将详细讲解如何利用Java编程语言实现这一功能,主要基于给定的"经纬度计算"标签...

    全国355个城市的经纬度坐标位置

    全国355个城市的经纬度坐标位置数据是一个重要的地理信息资源,对于开发地图应用、数据分析、定位服务等具有广泛的应用价值。这个数据集包含了中国所有地级市的精确经纬度信息,可以方便开发者直接集成到他们的项目...

    hive-udf(两地址间距离计算+省市区位置解析(Java代码))

    在Java中,我们可以使用第三方库如GeoTools或Google的Geocoding API来将地址解析为对应的经纬度坐标。这个过程通常涉及网络请求,将地址发送到地图服务提供商,然后解析返回的JSON或XML数据,从中提取出经度和纬度值...

    谷歌地图测量两点间直线距离

    谷歌地图作为全球广泛使用的在线地图服务,提供了方便的功能来帮助用户测量地图上任意两点之间的距离。本篇文章将深入探讨如何利用谷歌地图来实现这一功能,并介绍相关参数和技术细节。 首先,我们要明白在地图上...

    两点经纬度计算距离工具

    8. **API与服务**:除了专用的小工具,许多在线地图服务如Google Maps、Bing Maps等也提供了API,允许开发者直接计算两点间的距离,这在开发应用程序时非常方便。 了解这些知识点后,无论你是要评估旅行计划,还是...

    经纬度到像素坐标的转换.doc

    本文讨论了两种方法:公式转换法和坐标原点法,并且提供了距离计算法来计算两点之间的实际地理空间距离。这些方法和公式可以帮助我们正确地将经纬度信息转换到屏幕坐标系下的像素坐标,以便在地图上正确地显示地理...

    利用谷歌地图获取对应地名的经纬度源码(C#)

    总的来说,通过C#调用谷歌地图API进行地理编码,可以帮助开发者在各种项目中轻松获取地名对应的经纬度信息,从而实现各种基于地理位置的功能,如定位、导航、距离计算等。在开发时,请务必遵守谷歌地图API的使用政策...

    C# 根据已知经纬度地图定位,距离测算,路线查询

    C#中可以实现这个公式来计算任意两点间的直线距离,但请注意,实际路径可能会因为地形和道路限制而有所不同。 路线查询是地图应用的核心功能之一,这通常需要调用地图服务提供商的路线规划API。这些API接受起点和...

    webgis 经纬度坐标问题

    在WebGIS中,我们经常需要处理经纬度坐标进行地图展示、定位、分析等操作。 在WebGIS中,坐标问题通常涉及到以下几个方面: 1. 坐标系转换:地球是一个不规则的三维物体,不同的坐标系统有不同的投影方式。常见的...

    经纬度距离计算

    本项目是基于Windows平台,利用Qt进行开发,旨在通过输入两个地点的经纬度坐标,计算它们之间的直线距离。 首先,要实现这个功能,我们需要了解经纬度坐标系统。地球被划分为360度的经度和180度的纬度网格,其中0度...

    point-clustering.rar Java后端前端进行经纬度点抽稀聚合渲染

    Java后端进行经纬度点抽稀聚合,HTML呈现及前端聚合渲染 index.html 谷歌map后端点聚合 geos.html 后端点聚合并渲染 geo_cluster.html mapbox前端点聚合 jpg/heatJpgTile.html 栅格瓦片jpg渲染底图及数据 multilines...

    google地球多段线上等距取点VBA代码(已知一点经纬度,方位角,距离,求另一点经纬度 简化算法)

    2. **计算经纬度偏差值**:利用起始点的经纬度坐标,结合预设的距离间隔,逐步计算出每偏离一米时对应的经度偏差值`temp_lon`和纬度偏差值`temp_lat`。 3. **迭代计算等距点**:从起始点出发,利用上面计算出的偏差...

    GPS坐标系转换以及经纬度距离计算

    % * 谷歌地图采用的是WGS84地理坐标系(中国范围除外); % * GCJ02坐标系:即火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。 % * 谷歌中国地图和搜搜中国地图采用的...

    delphi经纬度换算源程序

    1. **经纬度坐标系统**:经纬度坐标系统是一种基于球面几何的地理坐标系统,其中经度范围为0到180°E和0到180°W,纬度范围为0到90°N和0到90°S。0°经线被称为本初子午线,0°纬线被称为赤道。 2. **Delphi编程...

    经纬度距离计算器html版

    【经纬度距离计算器html版】是一个实用的在线工具,它基于HTML、JavaScript和地理坐标系统,用于计算地球上两点之间的直线距离。这个工具对于需要处理地理位置信息的开发者来说非常有用,例如在开发地图应用或者需要...

    经纬度计算

    1. 大圆距离计算:地球上两点之间的最短路径是大圆航线。计算两个经纬度点之间的大圆距离需要用到球面三角学,常见的公式有哈弗辛公式(Haversine formula): \[ a = \sin^2\left(\frac{\phi_2 - \phi_1}{2}\...

    Google地图经纬度偏差纠正 C++ 源代码

    2. **考虑偏移**:Google地图为了保护隐私,对公开的经纬度坐标进行了随机偏移。源代码可能包含解密这些偏移的算法,以便得到更准确的匹配位置。 3. **高度修正**:虽然主要关注经纬度,但GPS还提供了海拔信息。在...

    gps.rar_GPS_google maps_gps tracker_已知两点经纬度求算两点间_距离

    标题中的“gps.rar”是一个压缩包文件,其中包含与GPS(全球定位系统)相关的资料,特别是关于使用Google Maps和GPS追踪器来计算已知两点经纬度间的距离的信息。这个压缩包里的唯一文件是“gps.txt”,很可能是包含...

    SQLSERVER 根据地图经纬度计算距离差示例

    本示例将介绍如何利用SQL Server自定义函数来计算两个经纬度坐标点之间的距离。 首先,我们要理解地球是一个近似于球体的形状,因此我们可以使用球面几何学中的哈弗辛公式(Haversine formula)来计算两点之间的大...

Global site tag (gtag.js) - Google Analytics