java 經緯度處理、計算兩地的距離、獲取當前一定距離以內的經緯度值
package com.fh.util; import java.util.HashMap; import java.util.Map; /** * 說明:經緯度處理 * 作者:FH Admin * from:fhadmin.cn */ public class MapDistance { private static double EARTH_RADIUS = 6378.137; private static double rad(double d) { return d * Math.PI / 180.0; } /** * 根據兩個位置的經緯度,來計算兩地的距離(單位為KM) * 引數為String型別 * @param lat1 使用者經度 * @param lng1 使用者緯度 * @param lat2 商家經度 * @param lng2 商家緯度 * @return */ public static String getDistance(String lat1Str, String lng1Str, String lat2Str, String lng2Str) { Double lat1 = Double.parseDouble(lat1Str); Double lng1 = Double.parseDouble(lng1Str); Double lat2 = Double.parseDouble(lat2Str); Double lng2 = Double.parseDouble(lng2Str); double patm = 2; double radLat1 = rad(lat1); double radLat2 = rad(lat2); double difference = radLat1 - radLat2; double mdifference = rad(lng1) - rad(lng2); double distance = patm * Math.asin(Math.sqrt(Math.pow(Math.sin(difference / patm), patm) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(mdifference / patm), patm))); distance = distance * EARTH_RADIUS; String distanceStr = String.valueOf(distance); return distanceStr; } /** * 獲取當前使用者一定距離以內的經緯度值 * 單位米 return minLat * 最小經度 minLng * 最小緯度 maxLat * 最大經度 maxLng * 最大緯度 minLat */ public static Map<Object,Object> getAround(String latStr, String lngStr, String raidus) { Map<Object,Object> map = new HashMap<Object,Object>(); Double latitude = Double.parseDouble(latStr);// 傳值給經度 Double longitude = Double.parseDouble(lngStr);// 傳值給緯度 Double degree = (24901 * 1609) / 360.0; // 獲取每度 double raidusMile = Double.parseDouble(raidus); Double mpdLng = Double.parseDouble((degree * Math.cos(latitude * (Math.PI / 180))+"").replace("-", "")); Double dpmLng = 1 / mpdLng; Double radiusLng = dpmLng * raidusMile; //獲取最小經度 Double minLat = longitude - radiusLng; // 獲取最大經度 Double maxLat = longitude + radiusLng; Double dpmLat = 1 / degree; Double radiusLat = dpmLat * raidusMile; // 獲取最小緯度 Double minLng = latitude - radiusLat; // 獲取最大緯度 Double maxLng = latitude + radiusLat; map.put("minLat", minLat+""); map.put("maxLat", maxLat+""); map.put("minLng", minLng+""); map.put("maxLng", maxLng+""); return map; } public static void main(String[] args) { //濟南國際會展中心經緯度:117.11811 36.68484 //趵突泉:117.00999000000002 36.66123 System.out.println(getDistance("116.97265","36.694514","116.597805","36.738024")); System.out.println(getAround("117.11811", "36.68484", "13000")); //117.01028712333508(Double), 117.22593287666493(Double), //36.44829619896034(Double), 36.92138380103966(Double) } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31558068/viewspace-2855658/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java 經緯度處理、計算兩地的距離、獲取當前一定距離以內的經緯度值 2022-02-14 0Java
- java 根據兩個位置的經緯度,來計算兩地的距離 經緯度處理Java
- JAVA計算兩經緯度間的距離Java
- 透過經緯度計算距離獲取附近商家
- 經緯度計算兩地之間的距離(原理與方法)
- 經緯度互換和計算距離
- 微信小程式 計算兩地之間的距離 + 高德地圖獲取經緯度 + elasticsearch微信小程式地圖Elasticsearch
- 通過sql 計算兩經緯度之間的距離SQL
- sql 計算兩個經緯度點之間的距離SQL
- 根據經緯度計算兩點之間的距離的公式公式
- 根據兩點經緯度計算距離和角度——java實現Java
- 使用MySQL的geometry型別處理經緯度距離問題MySql型別
- 獲取資料庫中到指定經緯度距離的座標資料庫
- 簡單計算給定兩個給定經緯度座標的距離
- java 根據GPS經緯度座標計算兩點的直線距離的演算法Java演算法
- PHP實現透過經緯度計算距離和查附近店門PHP
- 通過經緯度計算距離實現附近、附近的人等功能
- Elasticsearch 7.2 在 Laravel 中實踐 --經緯度及距離查詢ElasticsearchLaravel
- java百度地圖介面呼叫獲取經緯度Java地圖
- .NET程式獲取當前IP經緯度,並透過經緯度實現天氣查詢功能
- 常用經緯度轉換為ntu經緯度
- java 根據經緯度計算圓周Java
- 百度地圖計算兩座標點之間距離計算地圖
- 百度地圖JavaScript API獲取使用者當前經緯度並獲取使用者當前詳細地理位置地圖JavaScriptAPI
- Java根據地理位置獲取經緯度(呼叫百度地圖API)Java地圖API
- 百度地圖根據經緯度計算瓦片行列號地圖
- JavaScript獲取元素距離文件頂部的距離JavaScript
- 計算地圖中兩點之間的距離地圖
- 經緯度轉換
- javascript獲取元素距離網頁頂部的距離JavaScript網頁
- js根據經緯度,獲取省市區。(百度地圖逆地址解析)JS地圖
- uni-app:獲取當前經緯度解決方案+如何佈置全域性元件APP元件
- C#根據經緯度獲取實體地址C#
- 米轉換經緯度
- milvus 使用 l2 歐式距離計算向量的距離,計算出來的距離的最大值是多少?
- 智慧手環WIFI熱點和經緯度API獲取WiFiAPI
- iOS-百度地圖螢幕所顯示範圍內的經緯度iOS地圖
- iOS中地圖經緯度座標轉換iOS地圖