在JAVA中,經(jīng)緯度計算是比較常見的問題之一。計算兩個經(jīng)緯度之間的距離,可以采用哈弗曼公式,計算公式如下:
distance = 2 * R * arcsin(sqrt(sin((lat2-lat1)/2)^2 + cos(lat1) * cos(lat2) * sin((lng2-lng1)/2)^2))
其中 R 為地球半徑,可取常數(shù) 6371km;lng 為經(jīng)度,lat 為緯度。
根據(jù)經(jīng)緯度和距離計算出經(jīng)緯度范圍,可以采用以下方法:
public static MapgetRange(Double lat, Double lng, Double distance) { Map map = new HashMap (); // 一度(degree)約等于 111 千米 Double dLng = 2 * Math.asin(Math.sin(distance / (2 * R)) / Math.cos(Math.toRadians(lat))); Double dLat = distance / R; Double minLng = lng - Math.toDegrees(dLng); Double maxLng = lng + Math.toDegrees(dLng); Double minLat = lat - Math.toDegrees(dLat); Double maxLat = lat + Math.toDegrees(dLat); map.put("minLat", minLat); map.put("maxLat", maxLat); map.put("minLng", minLng); map.put("maxLng", maxLng); return map; }
其中,lat 為要計算的經(jīng)度,lng 為要計算的緯度,distance 為要計算的距離。
通過以上方法,我們可以方便地根據(jù)經(jīng)緯度和距離計算出經(jīng)緯度范圍,進一步進行位置搜索等操作。