2010-02-19 172 views
11

有沒有能夠給我兩個地址之間的駕駛距離的服務?顯然,Google Maps API要求您顯示一張地圖,我不想在該特定頁面上執行此操作,並且我希望在用戶提交表單後將其保存到我的數據庫中,而不是比等待JS做這件事。駕駛距離的REST API?


如果它是相關的,這將進入一個Django應用程序。我發現CloudMade提供了一個Python API,這很好,除了他們最新的dev版本有一個bug(不能使用API​​對象),但更重要的是,它對加拿大的支持是可怕的(無法從中找到方向在這裏的任何主要城市!)。

回答

1

這裏有免費的服務,但數據的質量可能是有問題/不存在的地區。也要注意數據上的許可證,存儲在您自己的數據庫中可能是違規。

http://openrouteservice.org/

+0

這種服務僅適用於英國嗎?似乎沒有承認任何加拿大地點... – mpen 2010-02-19 02:43:34

+0

歐洲的數據。 更多信息:http://wiki.openstreetmap.org/index.php/OpenRouteService。再加上其他例子,http://wiki.openstreetmap.org/wiki/YOURS,http://www.yournavigation.org/ – Jonathan 2010-02-19 03:00:59

3

是否可以使用谷歌地圖GDirections對象?如果使用div對象調用,這可以返回文本方向而不是地圖疊加層。從那裏你可以使用getDistance(或getDuration)的功能。如果您不希望在頁面上顯示任何內容,則可以始終使用不可見的div作爲回報。

從這裏開始
http://code.google.com/apis/maps/documentation/examples/directions-advanced.html
http://code.google.com/apis/maps/documentation/reference.html#GDirections

,並使用此示例代碼

var map; 
    var directionsPanel; 
    var directions; 

    function initialize() { 
     directionsPanel = document.getElementById("route"); 
     directions = new GDirections(null, directionsPanel); 
     GEvent.addListener(directions , "load", onGDirectionsLoad); 
     directions.load("from: 500 Memorial Drive, Cambridge, MA to: 4 Yawkey Way, Boston, MA 02215 (Fenway Park)"); 
    } 

    function onGDirectionsLoad(){ 
     alert(directions.getDistance().html); 
    } 
+3

「Google Maps API要求你顯示一張我不想做的地圖(在那個特定的頁面),而且我想在用戶提交表單後將數據截獲並保存到我的數據庫中,而不是等待JS完成它。「 - 要求,如他們的政策規定。這不是一個程序問題,這是一個法律問題。其次,我更喜歡非JS解決方案。不過謝謝。 – mpen 2010-04-21 18:06:26

+0

那麼你需要簽入的「需要」地圖。他們的API文檔和在線示例清楚地解釋瞭如何不向不需要的客戶顯示地圖(GDirections構造函數中的空參數)。 至於從服務器而不是客戶端調用它 - 只需寫入JS並從Web控件中的服務器調用它(不知道Django中是什麼)並直接解析返回值。將流量放在您的服務器上而不是客戶端上。不知道你是否可以通過直接調用來實現 - 可能必須在服務器Web控件中使用JS。 – ktharsis 2010-04-21 19:46:18

+0

現在不記得我在哪裏閱讀它的對抗他們的ToS。將JS放到共享服務器上的Web控件中可能會很棘手...... – mpen 2010-04-22 04:46:44

2

看看Navteq公司。大約5年前,我使用他們的服務來開發駕駛指導應用程序,並取得了良好的效果。最近不能爲他們說話。我相信最好的網址是Navteq Routing Service

+0

這不是免費的:( – mpen 2010-04-28 01:13:11

+0

正確,它沒有 - 沒有知道這是一個要求...對不起 – 2010-04-28 03:27:00

+0

我想我沒有指定。在項目開始時拋出$$$爲「很高興」。 – mpen 2010-06-07 06:56:36

9

MapQuest的Directions API是基於HTTP Querystring(我不確定它是否完全RESTful)。可以獲得XML或JSON響應。只需要發送一個HTTP GET請求。

http://developer.mapquest.com/web/products/open/directions-service

使用的 「距離」 響應參數。

+1

希望我可以將支票切換到你...這正是我正在尋找的! – mpen 2010-06-07 06:55:44

+0

只是幫助'一個同胞卡納克! – 2010-06-09 06:10:26

+1

http://developer.mapquest.com/web/products/dev-services/directions-ws(更新的URL) – russellpierce 2014-03-13 12:45:01

1

您可以直接使用新的Google Directions API,而不使用任何JavaScript。 http://code.google.com/apis/maps/documentation/directions/

+0

什麼時候發佈?我正在尋找的是什麼! – mpen 2010-06-27 01:11:02

+1

它在Google I/O 2010上發佈:http:// googlegeodevelopers.blogspot.com/2010/05/directions-web-service-arrives-at.html – eillarra 2010-07-15 08:04:09

+2

不幸的是,使用該服務的描述違反概述的頁面上使用的術語:「注:該路線API僅可用於結合在Google地圖上顯示結果;禁止使用路線數據而不顯示請求路線數據的地圖。此外,計算方向會產生版權和警告,必須以某種方式向用戶顯示。有關允許使用的完整詳細信息,請參閱Maps API服務條款許可限制。「我遇到了問題,因爲這個 – snicker 2013-07-29 17:54:16

8

我沒有足夠高的聲譽來評論答案,但我只想說明,與投票正確答案相反,Google Directions API必須遵守Google Maps API。如果向下滾動提供的鏈接,您將看到:

注意:Directions API只能與在Google地圖上顯示結果一起使用;禁止使用路線數據而不顯示請求路線數據的地圖。此外,計算方向會產生版權和警告,必須以某種方式向用戶顯示。有關允許使用的完整詳細信息,請參閱Maps API服務條款許可限制。

3

這裏是我的解決方案:

  1. 註冊爲Mapquest服務Developer網絡。
  2. 獲取的AppId
  3. 打開命令外殼並運行以下命令(或使用Fiddler)但通過捲曲運行它會給你的靈活性,自動化您的要求

    curl -X POST -H "Content-Type: application/json" -d '{locations: ["Salt Lake City, UT","Ogden, UT",],options: {allToAll: false}}' http://www.mapquestapi.com/directions/v2/routematrix?key=YOURKEYGOESHERE >> distance.txt 
    
  4. 保存上面的命令與所有的目的地轉換爲批處理或sh文件。

  5. 現在grep並解析出您的distance.txt文件,以滿足您的需求。
相關問題