2013-04-20 71 views
0

我使用cloudmade API成功實現了一個路由系統到我的網站。我也想在OSRM路由系統(https://github.com/DennisOSRM/Project-OSRM)上做同樣的事情,但我在獲取OSRM json輸出時遇到了一些問題。獲取OSRM路由的JSON

下面是從cloudmade API檢索JSON的例子:

使用$阿賈克斯 - http://jsfiddle.net/mayooresan/FhfVW/2/

$(function() { 
$("#getJSON").click(function() { 
    var url = "http://routes.cloudmade.com/c6f2762bfe00414f822a9dec443569f5/api/0.3/51.500,0.100,51.500,0.1001/car.js"; 
    $.ajax({ 
     async: false, 
     dataType: "jsonp", 
     url: url, 
     success: function (data) { 
      test = data.route_geometry; 
      alert(test); 
     } 
    }); 
}); 
}); 

使用$ .getJSON - http://jsfiddle.net/V3qgZ/72/

$(function() { 

$("#getJSON").click(function() { 

    $.getJSON("http://routes.cloudmade.com/c6f2762bfe00414f822a9dec443569f5/api/0.3/51.500,0.100,51.500,0.1001/car.js?callback=?", function (data) { 
     var test = data.route_geometry; 
     alert(test); 
    }); 
}); 
}); 

爲OSRM服務器API位於此處:https://github.com/DennisOSRM/Project-OSRM/wiki/Server-api(查詢的服務器位置位於http://router.project-osrm.org)。

將與上面使用的座標相同的網址(http://router.project-osrm.org/viaroute?loc=51.500,0.100&loc=51.500,0.1001)放入瀏覽器中,即可檢索json文件。但是不管我用什麼方法嘗試使用$ .getJSON或$ .ajax - 使用回調函數,設置數據類型,我無法獲得json數據,這使我瘋了!我相信這是可能的,因爲它在API中有記錄。

任何幫助非常感謝。

尼克

回答

0

試試這個: (其實jQuery的內部解析JSON)

Check this fiddle

$(function() { 

$("#getJSON").click(function() { 

$.getJSON("http://routes.cloudmade.com/c6f2762bfe00414f822a9dec443569f5/api/0.3/51.500,0.100,51.500,0.1001/car.js?callback=?", function (data) { 
    var test = data.route_geometry; 
      alert(JSON.stringify(test)); 

    }); 
}); 
}); 
+0

對不起,我不認爲這真的回答我的問題 - 沒有與cloudmade服務的問題,它與OSRM,我掙扎。 – NickF 2013-04-20 12:51:15

2

時光流逝,我想我會回答這個問題,以防萬一有人遇到同樣的問題。

OSRM的JSON響應與Cloudmade返回的響應不同。您的問題中的OSRM維基實際上回答了這個問題。來自OSRM的JSON被編碼,你需要特殊的處理。引用wiki,

路徑的幾何結構以編碼形式傳輸。

長話短說,有人已經讓我們輕鬆的事情。看看這個:https://github.com/perliedman/leaflet-routing-machine