我是靠谱客的博主 霸气爆米花,这篇文章主要介绍根据地图经纬度计算两个坐标点之间的距离/sql语句,根据经纬度计算5公里范围内的数据,现在分享给大家,希望可以做个参考。

第一步:导入依赖:

复制代码
1
2
3
4
5
6
<dependency> <groupId>org.gavaghan</groupId> <artifactId>geodesy</artifactId> <version>1.1.3</version> </dependency>

然后写工具类:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/** * 计算两个经纬度坐标点的距离 */ @Component public class ComputeCoordinateDistanceUtil { /** * 计算两个经纬度坐标点的距离 * @param gpsFrom 原坐标 * @param gpsTo 目的地坐标 * @param ellipsoid 使用的哪种坐标系 * @return */ public double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid){ return new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo).getEllipsoidalDistance(); } }

然后测试类:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Test { @org.junit.Test public void test(){ GlobalCoordinates source = new GlobalCoordinates(22.498298, 107.488658); GlobalCoordinates target = new GlobalCoordinates(22.618468, 109.588518); double meter1 = new ComputeCoordinateDistanceUtil().getDistanceMeter(source, target, Ellipsoid.Sphere); double meter2 = new ComputeCoordinateDistanceUtil().getDistanceMeter(source, target, Ellipsoid.WGS84); System.out.println("Sphere坐标系计算结果:"+meter1 + "米"); System.out.println("WGS84坐标系计算结果:"+meter2 + "米"); } }

在这里插入图片描述

WGS-84坐标系(World Geodetic System一1984 Coordinate System)
一种国际上采用的地心坐标系。

GCJ-02坐标系是由中国国家测绘局(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)制订的地理信息系统的坐标系统。

复制代码
1
2
3
4
5
6
国测局02年发布的坐标体系,它是一种对经纬度数据的加密算法,即加入随机的偏差。 互联网地图在国内必须至少使用GCJ-02进行首次加密,不允许直接使用 WGS-84坐标下的地理数据,同时任何坐标系均不可转换为WGS-84坐标。 是国内最广泛使用的坐标体系,高德、腾讯、Google中国地图都使用它。

sql语句,根据经纬度计算5公里范围内的数据

复制代码
1
2
3
4
5
<!--查询5公里范围内的店铺--> <select id="selectVendors" parameterType="java.lang.Double" resultType="Vendor"> select id,url,vendorName,start_delivery_price,delivery_price,sale_amount,label,longitude,latitude,need_time,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((#{param2}*PI()/180-latitude*PI()/180)/2),2)+COS(#{param2}*PI()/180)*COS(latitude*PI()/180)*POW(SIN((#{param1}*PI()/180-longitude*PI()/180)/2),2)))) as distance from takeout.vendor having distance &lt; 5 order by credit desc limit 8 </select>

返回的数据为km。

传递两个参数为Double型,此时用#{param1},#{param2}。

否则会报错,之前都是用的实体类。或者map封装。使用实体类时,#{name}要与实体类的属性相同,除非在mabatis文件中进行了设置。

最后

以上就是霸气爆米花最近收集整理的关于根据地图经纬度计算两个坐标点之间的距离/sql语句,根据经纬度计算5公里范围内的数据的全部内容,更多相关根据地图经纬度计算两个坐标点之间内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部