需求描述
在日常开发中有时会遇到,根据地理点位坐标,结合半径计算满足要求业务点位(例如:门店、商铺等)需求,此时就需要用到 Haversine 公式(它是一种用于计算地球上两点之间大圆距离(即最短距离)的公式。这个公式考虑了地球的曲率,因此比简单的欧几里得距离计算更准确。Haversine 公式通常用于计算经纬度之间的距离),注意 Haversine 公式计算长距离还行更为复杂的算法,这里仅作为 短距离 参考。
代码实现
public class GPSUtil {
/***
* 计算两个地理坐标之间的距离(精确到米)
* @param lat1,lon1 -点位1经纬度
* @param lat2,lon2 -点位2经纬度
* @return
*/
public static long calculateDistance(double lat1, double lon1, double lat2, double lon2) {
final int EARTH_RADIUS = 6371000; // 地球半径(单位:米)
double l