java 判断经纬度_Java中根据经纬度来判断距离

web项目常用的就是用户点击某些商家列表时需要根据距离返回商家列表,最近的放在最前面,这里推荐使用现成的工具类和流来处理。

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

com.google.guava

guava

22.0

写一个方法

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类给定一个字段,这个字段显示用户到商家之间的距离。查询出列表之后使用流遍历,将两个坐标之间的距离赋值给这个变量,最小的变量距离最近,最后根据变量升序返回。(如果不是很严谨的数据,这里可以忽略掉线程安全。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值