java实现根据经纬度算距离,java计算经纬度

发布时间:2022-11-23

本文目录一览:

  1. java 里 两点的经度纬度怎么算距离
  2. java如何用经纬度计算两点水平和垂直距离
  3. 如何根据经纬度计算距离的java代码
  4. JAVA,已知当前经纬度和距离,计算符合距离条件的经度最大值、最小值和纬度的最大值、最小值。

java 里 两点的经度纬度怎么算距离

/**
 * 计算地球上任意两点(经纬度)距离
 *
 * @param long1
 * 第一点经度
 * @param lat1
 * 第一点纬度
 * @param long2
 * 第二点经度
 * @param lat2
 * 第二点纬度
 * @return 返回距离 单位:米
 */
public static double Distance(double long1, double lat1, double long2, double lat2) {
    double a, b, R;
    R = 6378137; // 地球半径
    lat1 = lat1 * Math.PI / 180.0;
    lat2 = lat2 * Math.PI / 180.0;
    a = lat1 - lat2;
    b = (long1 - long2) * Math.PI / 180.0;
    double d;
    double sa2, sb2;
    sa2 = Math.sin(a / 2.0);
    sb2 = Math.sin(b / 2.0);
    d = 2 * R * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1) * Math.cos(lat2) * sb2 * sb2));
    return d;
}

java如何用经纬度计算两点水平和垂直距离

/**
 * 计算地球上任意两点(经纬度)距离
 *
 * @param long1
 *            第一点经度
 * @param lat1
 *            第一点纬度
 * @param long2
 *            第二点经度
 * @param lat2
 *            第二点纬度
 * @return 返回距离 单位:米
 */
public static double Distance(double long1, double lat1, double long2, double lat2) {
    double a, b, R;
    R = 6378137; // 地球半径
    lat1 = lat1 * Math.PI / 180.0;
    lat2 = lat2 * Math.PI / 180.0;
    a = lat1 - lat2;
    b = (long1 - long2) * Math.PI / 180.0;
    double d;
    double sa2, sb2;
    sa2 = Math.sin(a / 2.0);
    sb2 = Math.sin(b / 2.0);
    d = 2 * R * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1) * Math.cos(lat2) * sb2 * sb2));
    return d;
}

如何根据经纬度计算距离的java代码

思路是:通过传入地址作为参数拼接url调用百度地图,然后解析返回的页面,提取经纬度坐标。以下为具体步骤:

  1. 修改excel表中的属性名(方便后面用查询读取)然后倒入到数据库。
  2. 代码实现

JAVA,已知当前经纬度和距离,计算符合距离条件的经度最大值、最小值和纬度的最大值、最小值。

//拿走不谢
private final static double R = 6370996.81;
private final static double PI = 3.14159265;
private final static double RAD = Math.PI / 180.0;
/**
 * 根据提供的经度和纬度、以及半径,取得此半径内的最大最小经纬度
 *
 * @param lat 纬度
 * @param lon 经度
 * @param raidus 半径(米)
 * @return
 */
public static double[] GetAround(double lat, double lon, int raidus) {
    Double latitude = lat;
    Double longitude = lon;
    Double degree = (24901 * 1609) / 360.0;
    double raidusMile = raidus;
    Double dpmLat = 1 / degree;
    Double radiusLat = dpmLat * raidusMile;
    Double minLat = latitude - radiusLat;
    Double maxLat = latitude + radiusLat;
    Double mpdLng = degree * Math.cos(latitude * (PI / 180));
    Double dpmLng = 1 / mpdLng;
    Double radiusLng = dpmLng * raidusMile;
    Double minLng = longitude - radiusLng;
    Double maxLng = longitude + radiusLng;
    return new double[] { minLat, minLng, maxLat, maxLng };
}
/**
 * 根据提供的两个经纬度计算距离(米)
 *
 * @param lng1 经度1
 * @param lat1 纬度1
 * @param lng2 经度2
 * @param lat2 纬度2
 * @return
 */
public static double GetDistance(double lng1, double lat1, double lng2, double lat2) {
    double radLat1 = lat1 * RAD;
    double radLat2 = lat2 * RAD;
    double a = radLat1 - radLat2;
    double b = (lng1 - lng2) * RAD;
    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 * R;
    s = Math.round(s * 10000) / 10000;
    return s;
}