欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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程序设计有所帮助。