zoukankan      html  css  js  c++  java
  • Java中根据经纬度来判断距离

    谷歌有专门的Jar包,先导入包

    <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
       <version>22.0</version>
    </dependency>

    写一个方法
    public double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid) {
    
        //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
        GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
    
        return geoCurve.getEllipsoidalDistance();
    }
    可以看到参数是两个经纬度和一个坐标系。
    写个方法实验一下
       //此处可以传入用户经纬度
    
    GlobalCoordinates source = new GlobalCoordinates(23.697775,112.991604);
    
    //此处可以传入另一个地址经纬度
    GlobalCoordinates source2 = new GlobalCoordinates(23.758648,112.68745);
    //调用方法算出距离
    
    double meter1 = getDistanceMeter(source, source1, Ellipsoid.Sphere);

    这里使用了Sphere的坐标系 比较出名的还有一个WGS84,坐标系不同距离可能有一点误差。
    最后返回的meter1就是两个经纬度之间的距离了。
    小建议:可以将Pojo类给定一个字段,这个字段显示用户到商家之间的距离。查询出列表之后使用流遍历,将两个坐标之间的距离赋值给这个变量,最小的变量距离最近,最后根据变量升序返回。(如果不是很严谨的数据,这里可以忽略掉线程安全。)




    不和别人一样,不复制只真正理解
  • 相关阅读:
    总体设计
    需求分析概述
    毕业论文管理系统(面向对象方法)
    结构化与面向对象项目前期
    各人博客园地址链接
    软件测试
    读后感作业
    运行及总结
    图书馆管理系统面向对象编程
    图书管理系统设计类图
  • 原文地址:https://www.cnblogs.com/Vinlen/p/12746011.html
Copyright © 2011-2022 走看看