来了个新需求,获取当前位置附近几百米范围内的设备,由于这边是APP端需要加载数据,也就是需要我这边根据当前坐标位置重新计算出来周围几百米内的设备信息了。百度了一波,看一个老哥写的,感觉很有道理的样子,拿来试了试,上代码。
@ResponseBody
@RequestMapping("/getMap1")
public List<Umap> getMap1(){
//当前位置坐标
Double latitude = 117.065719;
Double longitude = 36.707094;
Double degree = (24901 * 1609) / 360.0;
double raidusMile = 500;//筛选的范围,以米为单位
Double dpmLat = 1 / degree;
Double radiusLat = dpmLat * raidusMile;
Double minLat = latitude - radiusLat;
Double maxLat = latitude + radiusLat;
Double mpdLng = Math.abs(degree * Math.cos(latitude * (3.1415926535898 / 180)));
Double dpmLng = 1 / mpdLng;
Double radiusLng = dpmLng * raidusMile;
Double minLng = longitude - radiusLng;
Double maxLng = longitude + radiusLng;
List<Umap> list = mapMapper.getFiveMeters(minLat,maxLat,minLng,maxLng);
return list ;
我的SQL
@Select(" select * from map where (y>=#{minLng} and y<=#{maxLng}) and (x>=#{minLat} and x<=#{maxLat} ) ")
List<Umap> getFiveMeters(@Param("minLat")Double minLat,@Param("maxLat")Double maxLat,@Param("minLng")Double minLng,@Param("maxLng")Double maxLng);
亲测,有效果,感觉数据很对,就是不知道是不是真的,应该是真的,不信你试试。