inhv的gravatar头像
inhv2014-02-13 14:44:47

【LBS】移动互联网基于LBS地理位置应用java开发必备

功能:计算两个点(经纬度坐标)之间的距离

使用示例:

double distance = LatLng.distance(113.926496000000000, 22.538393000000000, 114.23, 22.23);

package com.haohui.util;

/**
 * 计算两个经纬度之间的距离的工具类
 * 
 * Feb 13, 2014
 * @author ZhihaoChen
 */
public class LatLng {
	private static double lngPerMeter = 1.E-005D;

	public double getLat(double _curLat, int _radius) {
		return _radius * lngPerMeter;
	}

	public double getLng(int _radius) {
		return _radius * lngPerMeter;
	}

	/**
	 * 计算两个经纬度之间的距离
	 * 
	 * @param _lng1
	 * @param _lat1
	 * @param _lng2
	 * @param _lat2
	 * @return
	 */
	public static double distance(double _lng1, double _lat1, double _lng2,
			double _lat2) {
		if ((_lng1 == 0.0D) || (_lat1 == 0.0D) || (_lng2 == 0.0D)
				|| (_lat2 == 0.0D)) {
			return 0.0D;
		}
		double rad_lat1 = Rad(_lat1);
		double rad_lat2 = Rad(_lat2);
		double a = rad_lat1 - rad_lat2;
		double b = Rad(_lng1) - Rad(_lng2);
		double s = 2.0D * Math.asin(Math.sqrt(Math
				.pow(Math.sin(a / 2.0D), 2.0D)
				+ Math.cos(rad_lat1)
				* Math.cos(rad_lat2)
				* Math.pow(Math.sin(b / 2.0D), 2.0D)));
		s *= 6378137.0D;
		s = Math.round(s * 10000.0D) / 10000L;
		return s;
	}

	private static double Rad(double _d) {
		return _d * 3.141592653589793D / 180.0D;
	}
	
}

 


AXIN编辑于2014-2-13 16:40:34


打赏

文件名:LatLng.java,文件大小:1.192K下载
最代码最近下载分享源代码列表最近下载
JoeJie LV62020年9月4日
月亮星星星星
筱进GG LV382020年3月24日
太阳太阳月亮星星星星
luohaipeng LV232019年11月19日
太阳月亮星星星星星星
呼延烨赫 LV32019年10月10日
星星星星星星
sunlsy LV112018年7月25日
月亮月亮星星星星星星
vijayChen LV162018年7月3日
太阳
wkc LV212018年5月13日
太阳月亮星星
爱给糖的叔叔 LV82018年4月12日
月亮月亮
dmbjsjct LV22018年3月31日
星星星星
sunboris514 LV82018年1月4日
月亮月亮
最代码最近浏览分享源代码列表最近浏览
newbag LV98月9日
月亮月亮星星
HelloWorld0884月19日
暂无贡献等级
Killah LV84月16日
月亮月亮
14702999832月13日
暂无贡献等级
小五12345 LV111月4日
月亮月亮星星星星星星
JoeJie LV62020年9月4日
月亮星星星星
sabrezhou LV12020年5月25日
星星
随便取个名字_哈哈 LV262020年4月27日
太阳月亮月亮星星星星
筱进GG LV382020年3月24日
太阳太阳月亮星星星星
sonofy123 LV92020年2月14日
月亮月亮星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友