最代码广告位
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下载
最代码最近下载分享源代码列表最近下载
筱进GG LV383月24日
太阳太阳月亮星星星星
luohaipeng LV232019年11月19日
太阳月亮星星星星星星
呼延烨赫 LV22019年10月10日
星星星星
sunlsy LV112018年7月25日
月亮月亮星星星星星星
vijayChen LV162018年7月3日
太阳
wkc LV182018年5月13日
太阳星星星星
爱给糖的叔叔 LV82018年4月12日
月亮月亮
dmbjsjct LV22018年3月31日
星星星星
sunboris514 LV82018年1月4日
月亮月亮
孙悟空 LV12017年9月2日
星星
最代码最近浏览分享源代码列表最近浏览
筱进GG LV383月24日
太阳太阳月亮星星星星
sonofy123 LV92月14日
月亮月亮星星
caibos LV22019年12月13日
星星星星
luohaipeng LV232019年11月19日
太阳月亮星星星星星星
wuqiwan123 LV172019年10月14日
太阳星星
呼延烨赫 LV22019年10月10日
星星星星
is_gary LV142019年8月18日
月亮月亮月亮星星星星
lll1234567890 LV72019年7月17日
月亮星星星星星星
heimalive LV22019年7月2日
星星星星
daijian79 LV52019年6月19日
月亮星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友