Java编程获取经纬度之间距离的方法
程序员文章站
2024-03-06 17:34:50
本文实例讲述了java编程获取经纬度之间距离的方法。分享给大家供大家参考,具体如下:
public class geoutil {
/**
* 根据经纬...
本文实例讲述了java编程获取经纬度之间距离的方法。分享给大家供大家参考,具体如下:
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; }
希望本文所述对大家java程序设计有所帮助。