南京网站推广公司seo上海公司
一、计算两个经纬度坐标的距离
/*** 求两点之间的距离* @param long1 A点经度* @param lat1 A点纬度* @param long2 B点经度* @param lat2 B点纬度* @return 两点距离*/public double getDistance(double long1, double lat1, double long2, double lat2) {double a, b, R;R = 6378137;//地球半径lat1 = lat1 * Math.PI / 180.0;lat2 = lat2 * Math.PI / 180.0;a = lat1 - lat2;b = (long1 - long2) * 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;}
二、获取某个定位点经纬度,固定半径的经纬度范围
/*** 根据经纬度和半径计算经纬度范围** @param raidus 单位米* @return minLat, minLng, maxLat, maxLng*/public static double[] getAround(double lat, double lon, int raidus) {Double latitude = lat;Double longitude = lon;Double degree = (24901 * 1609) / 360.0;double raidusMile = raidus;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;Double minLng = longitude - radiusLng;Double maxLng = longitude + radiusLng;return new double[]{minLat, minLng, maxLat, maxLng};}