百度地图经纬度计算距离(Java)
生活随笔
收集整理的這篇文章主要介紹了
百度地图经纬度计算距离(Java)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
百度地圖Java經(jīng)緯度計(jì)算距離
- 閱讀百度地圖Web服務(wù)api文檔
- Maven依賴
- 百度地圖經(jīng)緯度工具類
閱讀百度地圖Web服務(wù)api文檔
Maven依賴
<!--baidu--><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils-core</artifactId><version>1.8.0</version></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.1</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency><dependency><groupId>net.sf.ezmorph</groupId><artifactId>ezmorph</artifactId><version>1.0.6</version></dependency><!--計(jì)算距離--><dependency><groupId>org.gavaghan</groupId><artifactId>geodesy</artifactId><version>1.1.3</version></dependency>百度地圖經(jīng)緯度工具類
借鑒了前輩的代碼。哈哈哈哈
package com.api.utils; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.HashMap; import java.util.Map; import net.sf.json.JSONObject; import org.gavaghan.geodesy.Ellipsoid; import org.gavaghan.geodesy.GeodeticCalculator; import org.gavaghan.geodesy.GlobalCoordinates;/*** @ClassName: BaiduMapUtils* @Author: Apache_MYK* @Date: 2021/5/27 16:39* @Description: TODO*/ public class BaiduMapUtils {private static final String AK = ""/*** 百度地圖通過地址來獲取經(jīng)緯度,傳入?yún)?shù)address** @param address* @return Todo*/public static Map<String, Double> getLngAndLat(String address) {Map<String, Double> map = new HashMap<String, Double>();String url = "http://api.map.baidu.com/geocoding/v3/?address=" + address + "&output=json&ak=" + AK+"&callback=showLocation";String json = loadJSON(url);JSONObject obj = JSONObject.fromObject(json);if (obj.get("status").toString().equals("0")) {double lng = obj.getJSONObject("result").getJSONObject("location").getDouble("lng");double lat = obj.getJSONObject("result").getJSONObject("location").getDouble("lat");map.put("lng", lng);map.put("lat", lat);System.out.println("經(jīng)度:" + lng + "--- 緯度:" + lat);} else {System.out.println("未找到相匹配的經(jīng)緯度!");}return map;}public static String loadJSON(String url) {StringBuilder json = new StringBuilder();try {URL oracle = new URL(url);URLConnection yc = oracle.openConnection();BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream(), "UTF-8"));String inputLine = null;while ((inputLine = in.readLine()) != null) {json.append(inputLine);}in.close();} catch (Exception e) {}int index1 = json.indexOf("(");int index2 = json.lastIndexOf(")");return json.substring(index1 + 1, index2).toString();}/*** 通過經(jīng)緯度獲取距離(單位:米)* @param longitudeFrom* @param latitudeFrom* @param longitudeTo* @param latitudeTo* @return*/public static double getDistance1(double longitudeFrom, double latitudeFrom, double longitudeTo, double latitudeTo) {GlobalCoordinates source = new GlobalCoordinates(latitudeFrom, longitudeFrom);GlobalCoordinates target = new GlobalCoordinates(latitudeTo, longitudeTo);return new GeodeticCalculator().calculateGeodeticCurve(Ellipsoid.Sphere, source, target).getEllipsoidalDistance();}}總結(jié)
以上是生活随笔為你收集整理的百度地图经纬度计算距离(Java)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows2000系统下载安装,怀念
- 下一篇: teechart for java_Te