日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

两个地址之间的距离测量(使用高德API)

發布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 两个地址之间的距离测量(使用高德API) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先:

  • 通過高德開放者平臺http://lbs.amap.com/,注冊一個開發者賬號,獲得一個KEY(調用接口時需要使用該KEY)
    注冊完成后如下圖,在我的應用里面創建,key的名稱自己取,key值自動生成
  • 閱讀高德web 服務API接口的文檔高德API接口文檔概述
    距離測量在 高德API路徑規劃里
    https://lbs.amap.com/api/webservice/guide/api/direction
  • 然后: 貼代碼吧

    這里有直接通過經緯度獲取距離的
    也有輸入一個地址獲取距離的

    請求參數里面有一個type(API接口里有介紹)
    0:直線距離
    1:駕車導航距離(僅支持國內坐標)。
    必須指出,當為1時會考慮路況,故在不同時間請求返回結果可能不同。
    此策略和駕車路徑規劃接口的 strategy=4策略基本一致,策略為“ 躲避擁堵的路線,但是可能會存在繞路的情況,耗時可能較長 ”
    若需要實現高德地圖客戶端效果,可以考慮使用駕車路徑規劃接口
    3:步行規劃距離(僅支持5km之間的距離)

    這里采用的是type=1,即駕車導航距離

    import com.google.gson.Gson; import net.sf.json.JSONArray; import net.sf.json.JSONObject;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map;public class NewGetDistance {private static final String key = "你申請的key";public static void main(String[] args){//111111根據經緯度查詢距離的//注意:高德最多取小數點后六位 //格式: 經度,緯度String origin = "108.960747"+","+"34.266451";//陜西省西安市新城區String destination = "117.150738"+","+"39.138203";//天津市南開區String distance = distance(origin, destination);System.out.println(distance);//222222根據地址查詢距離的String start = "陜西省西安市新城區";String end = "天津市南開區";String startLonLat = getLonLat(start);//獲取到開始地址的經緯度String endLonLat = getLonLat(end);//獲取到達地址的經緯度String distan = distance(startLonLat,endLonLat);System.out.println(distan);}/*** 高德地圖WebAPI : 行駛距離測量*/public static String distance(String origins,String destination) {int type = 1;//type=1,即駕車導航距離String url = "http://restapi.amap.com/v3/distance?"+ "origins="+origins+"&destination="+destination+"&type="+type+"&key="+ key;//這里用的Gson,也可以用下面的JSON,都試了一下Gson gson = new Gson();Map map = new Gson().fromJson(getLoadJson(url),Map.class);List list=(List)map.get("results");Map<String,String> map1 = (Map) list.get(0);String distance = map1.get("distance");System.out.println(distance);// JSONObject jsonobject = JSONObject.fromObject(loadJson(url)); // System.out.println(jsonobject.toString()); // JSONArray resultsArray = jsonobject.getJSONArray("results"); // JSONObject distanceObject = resultsArray.getJSONObject(0); // String resdistance = distanceObject.getString("distance");return distance;}/*** Java http 請求 獲取結果*/public static String getLoadJson (String url) {StringBuilder json = new StringBuilder();try {//下面那條URL請求返回結果無中文,可不轉換編碼格式URL urlObject = new URL(url);URLConnection uc = urlObject.openConnection();BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));String inputLine = null;while ( (inputLine = in.readLine()) != null) {json.append(inputLine);}in.close();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return json.toString();}/*** 根據給的地址獲得經緯度信息* @param address* @return*/private static String getLonLat(String address){//返回輸入地址address的經緯度信息, 格式是 經度,緯度String queryUrl = "http://restapi.amap.com/v3/geocode/geo?key="+key+"&address="+address;String queryResult = getLoadJson(queryUrl); //高德接口返回的是JSON格式的字符串//這里也可以用Gson接//JSONObject是Map,可以通過key訪問值//JSONArray是List,可以通過索引訪問值JSONObject jo = new JSONObject().fromObject(queryResult);JSONArray ja = jo.getJSONArray("geocodes");return new JSONObject().fromObject(ja.getString(0)).get("location").toString();} }

    注意:這里的
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    這兩個包的依賴,注意版本號

    <dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier> </dependency>

    Gson還是很好用的,Gson對象有toJson和fromJson兩個方法,toJson是對象轉字符串,fromJson是字符串轉對象。附上Gson的使用

    記錄自己寫的過程

    總結

    以上是生活随笔為你收集整理的两个地址之间的距离测量(使用高德API)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。