获取经纬度之间的距离

public class GeoUtil {

	/**
	 * 根据经纬度和距离返回一个矩形范围
	 * 
	 * @param lng
	 *            经度
	 * @param lat
	 *            纬度
	 * @param distance
	 *            距离(单位为米)
	 * @return [lng1,lat1, lng2,lat2] 矩形的左下角(lng1,lat1)和右上角(lng2,lat2)
	 */
	public static double[] getRectangle(double lng, double lat, long distance) {
		float delta = 111000;
		if (lng != 0 && lat != 0) {
			double lng1 = lng - distance
					/ Math.abs(Math.cos(Math.toRadians(lat)) * delta);
			double lng2 = lng + distance
					/ Math.abs(Math.cos(Math.toRadians(lat)) * delta);
			double lat1 = lat - (distance / delta);
			double lat2 = lat + (distance / delta);
			return new double[] { lng1, lat1, lng2, lat2 };
		} else {
			// TODO ZHCH 等于0时的计算公式
			double lng1 = lng - distance / delta;
			double lng2 = lng + distance / delta;
			double lat1 = lat - (distance / delta);
			double lat2 = lat + (distance / delta);
			return new double[] { lng1, lat1, lng2, lat2 };
		}
	}

	/**
	 * 得到两点间的距离 米
	 * 
	 * @param lat1
	 * @param lng1
	 * @param lat2
	 * @param lng2
	 * @return
	 */
	public static double getDistanceOfMeter(double lat1, double lng1,
			double lat2, double lng2) {
		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 * EARTH_RADIUS;
		s = Math.round(s * 10000) / 10;
		return s;
	}
	
	private static double rad(double d) {
		return d * Math.PI / 180.0;
	}

	/**
	 * 地球半径:6378.137KM
	 */
	private static double EARTH_RADIUS = 6378.137;

}


 

百度地图经纬度计算距离可以使用以下方法: 引用\[2\]中的Java代码示例中的`getDistance`方法可以计算经纬度之间距离,单位为米。你可以将经度和纬度作为参数传递给该方法,然后获取计算得到的距离。 另外,引用\[3\]中的PHP代码示例中的`actionGetDistance`方法也可以计算经纬度之间距离,单位为公里。你可以将经度和纬度作为参数传递给该方法,然后获取计算得到的距离。 需要注意的是,这两种方法计算距离的精度可能会有所不同,具体使用哪种方法取决于你的需求和使用的编程语言。 #### 引用[.reference_title] - *1* [根据经纬度计算距离(百度地图)](https://blog.csdn.net/yang_guang3/article/details/108326682)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [百度地图经纬度距离计算](https://blog.csdn.net/weixin_30486037/article/details/97370800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [百度地图根据经度纬度计算距离,单位(km)](https://blog.csdn.net/diavid/article/details/80194282)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值