好运物流网-全国领先的物流网   好运物流网-登录  好运物流网-免费注册 进入我的后台 首页 | 发布信息 | 服务项目 | 物流百科
物流查询|物流公司|中国物流信息网-好运物流网
 
你正在查看的信息:资讯首页->资讯频道->IT编程技术->正文

java地图距离计算:java如何实现地图两点之间的距离计算

更新时间:2022/4/24 9:21    出处:互联网
已经浏览
9624
距离计算方法工具类:
import java.math.BigDecimal;
 
/**
 * @author lovelyhedong
 * @date 2020年8月21日 22:49:53
 */
public class LngLatUtils {
    // 赤道半径
    private static final double EARTH_RADIUS = 6378137;
 
    /**
     * 根据经纬度获取两点的距离(单位米)
     */
    public static Double getDistance(double lng1, double lat1, double lng2, double lat2) {
        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;
        return s;
    }
 
    private static double rad(double d) {
        return d * Math.PI / 180.0;
    }
    /**
     * 根据经纬度获取两点的距离(单位米)
     */
    public static Double getDistance(BigDecimal lng1, BigDecimal lat1, BigDecimal lng2, BigDecimal lat2) {
        return getDistance(lng1.doubleValue(), lat1.doubleValue(), lng2.doubleValue(), lat2.doubleValue());
    }
 
    /**
     * 根据经纬度获取两点的距离(单位公里/千米)
     */
    public static Double getKilometer(double lng1, double lat1, double lng2, double lat2) {
        return Math.round(getDistance(lng1, lat1, lng2, lat2)) / 1000d;
    }
 
    /**
     * 根据经纬度获取两点的距离(单位公里/千米)
     */
    public static Double getKilometer(BigDecimal lng1, BigDecimal lat1, BigDecimal lng2, BigDecimal lat2) {
        return Math.round(getDistance(lng1.doubleValue(), lat1.doubleValue(), lng2.doubleValue(), lat2.doubleValue())) / 1000d;
    }
 
}

导入依赖包计算方式:

import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
import org.gavaghan.geodesy.GlobalCoordinates;
 
/**
 * 需要的依赖
 * <dependency>
 *   <groupId>org.gavaghan</groupId>
 *   <artifactId>geodesy</artifactId>
 *   <version>1.1.3</version>
 * </dependency>
 */
public class MapTest {
 
    public static void main(String[] args) {
        //相差25米 大约等于0.024公里
        Double fristLng = 104.02436160776520;//第一个经度
        Double fristLat = 30.75109533912993;//第一个纬度
        Double secoundLng = 104.02270936701203;//第二个经度
        Double secoundLat = 30.75073113557945;//第二个纬度
        System.out.println(Math.round(getDistance(fristLng,
                fristLat,
                secoundLng,
                secoundLat)) / 1000d);//这里除以1000,换算成了公里,如果不除以1000就是米数
    }
 
    public static double getDistance(double longitudeFrom, double latitudeFrom, double longitudeTo, double latitudeTo) {
        GlobalCoordinates source = new GlobalCoordinates(latitudeFrom, longitudeFrom);
        GlobalCoordinates target = new GlobalCoordinates(latitudeTo, longitudeTo);
        return new GeodeticCalculator().calculateGeodeticCurve(Ellipsoid.WGS84, source, target).getEllipsoidalDistance();
    }
}

原文链接:https://blog.csdn.net/MiaodXindng/article/details/108160926
还可以看看其他文章,谢谢您的阅读。
网站申明:系本文编辑转载,来源于网络,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,所有权归属原作者。如内容、图片有任何版权问题,请联系我们删除
上一篇:js实现输入框TextBox只能输入数字 下一篇:Linux设置端口访问权限
更多相关的物流文章
IT编程技术  互联网  2023-10-07  浏览:6021次
IT编程技术  互联网  2022-11-24  浏览:9248次
IT编程技术  互联网  2022-11-17  浏览:9281次
IT编程技术  互联网  2022-11-14  浏览:9090次
IT编程技术  互联网  2022-11-06  浏览:9431次
IT编程技术  互联网  2022-11-05  浏览:8978次
IT编程技术  互联网  2022-10-28  浏览:9674次
正在被浏览的文章
【IT编程技术】热点文章
“扫一扫”微信公众号
好运物流网公众号二维码
关于好运物流网 - 联系好运网 - 物流公司查询 - 物流知道 - 帮助中心 - 网站地图
温馨提示:防范支招 安全警示:货运合作要有安全意识,需当面核实对方真实身份,要签订合同/协议、提供身份证等(防范支招)
免责声明:本站只起到物流信息平台作用,内容的准确性以及物流过程中出现的任何风险均由发布者负责,与平台无关。
好运物流网(haoyun56.com)  备案号:浙ICP备10210792号-4

浙公网安备 33080202000006号