天天看點

vue擷取元素距離頂部的距離_4種地圖距離的擷取方式

擷取實際地圖位址各個節點間距離4種方式比較實用的方式:

  1. 半正矢公式;
  2. 百度-批量算路;
  3. 高德-距離測算;
  4. Graphhopper-Routing API(開源代碼);

百度和高德

半正矢公式 百度-批量算路 高德-距離測算 Graphhopper-Routing API
支援模式 1、直線 1、駕車2、騎行3、步行 1、直線2、駕車3、步行 1、car2、bike3、foot4、hike5、mtb6、racingbike7、scooter8、truck9、small_truck
駕車政策 1、不走高速(考慮路況)2、正常路線(考慮路況)3、距離較短 1、考慮路況避擁堵 1、不考慮路況
坐标系 bd09ll amap WGS84
資源使用 1、公式簡單,可毫秒級别生成距離矩陣;2、和現實場景相當不比對 1、每日配額有限;2、非企業級使用者單次請求最大路線數50;3、有并發;4、較準确5、慢 1、每日配額有限;2、單次請求最大路線數100;3、有并發;4、較準确5、慢 1、開源代碼,可離線部署不受資源限制, 需要改造接口;2、離線地圖包對國内實際路況不全導緻部分距離離譜,耗時很短

1. 半正矢公式

網上有很多關于公式的介紹,這裡一袋而過了,公式如下所示:

vue擷取元素距離頂部的距離_4種地圖距離的擷取方式

其中,

vue擷取元素距離頂部的距離_4種地圖距離的擷取方式

vue擷取元素距離頂部的距離_4種地圖距離的擷取方式

分别是緯度和經度的弧度;

vue擷取元素距離頂部的距離_4種地圖距離的擷取方式

代表地球半徑。

2. 百度-批量算路

  • 網址:Web服務API | 百度地圖API SDK
  • 入口:搜尋-百度地圖API → 開發文檔 → Web服務API → 批量算路
vue擷取元素距離頂部的距離_4種地圖距離的擷取方式
vue擷取元素距離頂部的距離_4種地圖距離的擷取方式
  • 推薦:服務文檔中介紹了接口文檔,ak字段需要在控制台中建立應用獲得,具體的内容文檔中描述比較詳細。對接口請求較陌生的話可以先用postman試一試,其次推薦使用python相比java的http請求的包裝工具更簡單。
  • 特色:提供是否考慮路況的選擇,仿真的時候推薦使用不考慮路況,考慮路況每隔一段時間距離和耗時都會變。

3. 高德-距離測算

  • 網址:路徑規劃-API文檔-開發指南-Web服務 API | 高德地圖API
  • 入口:搜尋-高德地圖API → 開發支援 → Web服務API → 路徑規劃 → 距離測算
vue擷取元素距離頂部的距離_4種地圖距離的擷取方式
vue擷取元素距離頂部的距離_4種地圖距離的擷取方式
  • 推薦:同百度地圖一樣
  • 特色:高德地圖的接口比較人性化,頁面自帶請求工具,可視化資料結構。自帶origin_id和dest_id不用苦惱被閹割後的距離矩陣怎麼拼接了。
vue擷取元素距離頂部的距離_4種地圖距離的擷取方式

4. Graphhopper-Routing API(開源代碼)

網址:https://github.com/graphhopper/graphhopper

Matrix API是專門用于TSP/VRP拼接距離鄰接矩陣,雖說是收費,但是注冊的時候國家沒找到國内,體驗不了試用版了。沒關系Graphhopper提供了部分java的開源代碼,其中就包含了Routing API,它能計算兩個節點間的距離和耗時,這樣就通過多次請求就可以拼裝出距離矩陣了。假如我們有M個節點,請求該接口M*(M-1)次就可以了,但是考慮通信的耗時,建議在源碼中提供的custom上做批量的二次開發(關于接口路徑在下面圖中)。速度嘛是比高德、百度快很多,不考慮網絡的影響平均20ms處理一條線路,當然也可以開啟加速模式開啟turn_cost。

vue擷取元素距離頂部的距離_4種地圖距離的擷取方式
vue擷取元素距離頂部的距離_4種地圖距離的擷取方式