mybatis +mysql获取方圆多少距离的经纬度
在新作的项目中,由于业务的需要,需要实现周边搜索的功能,采用mybatis+spring,核心的算法的内容如下:
地球的半径 EARTH_RADIUS = 6378137;
根据中心经纬度和相隔的距离计算方圆的经纬度,以米为单位,的写法
/**
* 生成以中心点为中心的四方形经纬度
*
* @param centralLat 中心点纬度 ,这里传手机所在的维度
* @param centralLon 中心点精度 ,这里传手机所在的精度
* @param distance 半径(以米为单位),由客户端传递进来的距离参数
* @return map minLat最小维度 maxLat最大纬度 minLon最小精度 maxLon最大经度 earthRadius地球的半径
*/
public static Map<String,Object> getAround(double centralLat, double centralLon, int distance) {
Map<String,Object> map = new HashMap<String,Object>();
Double latitude = centralLat;
Double longitude = centralLon;
Double degree = (24901 * 1609) / 360.0;
double raidusMile = distance;
Double dpmLat = 1 / degree;
Double radiusLat = dpmLat * raidusMile;
Double minLat = latitude - radiusLat;
Double maxLat = latitude + radiusLat;
Double mpdLng = degree * Math.cos(latitude * (Math.PI / 180));
Double dpmLng = 1 / mpdLng;
Double radiusLng = dpmLng * raidusMile;
* 生成以中心点为中心的四方形经纬度
*
* @param centralLat 中心点纬度 ,这里传手机所在的维度
* @param centralLon 中心点精度 ,这里传手机所在的精度
* @param distance 半径(以米为单位),由客户端传递进来的距离参数
* @return map minLat最小维度 maxLat最大纬度 minLon最小精度 maxLon最大经度 earthRadius地球的半径
*/
public static Map<String,Object> getAround(double centralLat, double centralLon, int distance) {
Map<String,Object> map = new HashMap<String,Object>();
Double latitude = centralLat;
Double longitude = centralLon;
Double degree = (24901 * 1609) / 360.0;
double raidusMile = distance;
Double dpmLat = 1 / degree;
Double radiusLat = dpmLat * raidusMile;
Double minLat = latitude - radiusLat;
Double maxLat = latitude + radiusLat;
Double mpdLng = degree * Math.cos(latitude * (Math.PI / 180));
Double dpmLng = 1 / mpdLng;
Double radiusLng = dpmLng * raidusMile;