首页 > 学院 > 开发设计 > 正文

LBS相关工具函数

2019-11-08 20:19:08
字体:
来源:转载
供稿:网友

LBS相关工具函数

@(ML)[ML]

完整代码请见:https://github.com/lujinhong/lujinhong-commons/tree/master/lujinhong-commons-java/src/main/java/com/lujinhong/commons/java/lbs

1、计算某个点周围一定距离的经纬度范围

public static Map<String, Double> getAround(Double latitude, Double longitude, Double raidusMile) { HashMap<String, Double> map = new HashMap(); Double degree = (24901 * 1609) / 360.0; // 获取每度 Double mpdLng = Double.parseDouble((degree * Math.cos(latitude * (Math.PI / 180))+"").replace("-", "")); Double dpmLng = 1 / mpdLng; Double radiusLng = dpmLng * raidusMile; //获取最小经度 Double minLng = longitude - radiusLng; // 获取最大经度 Double maxLng = longitude + radiusLng; Double dpmLat = 1 / degree; Double radiusLat = dpmLat * raidusMile; // 获取最小纬度 Double minLat = latitude - radiusLat; // 获取最大纬度 Double maxLat = latitude + radiusLat; map.put("minLat", minLat); map.put("maxLat", maxLat); map.put("minLng", minLng); map.put("maxLng", maxLng); return map;}

2、计算2个经纬度点之间的距离,单位为米

public static double getDistance(double lng1, double lat1, double lng2, double lat2) { double a, b, R; R = 6378137; // 地球半径 lat1 = lat1 * Math.PI / 180.0; lat2 = lat2 * Math.PI / 180.0; a = lat1 - lat2; b = (lng1 - lng2) * Math.PI / 180.0; double d; double sa2, sb2; sa2 = Math.sin(a / 2.0); sb2 = Math.sin(b / 2.0); d = 2 * R * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1) * Math.cos(lat2) * sb2 * sb2)); return d;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表