我使用cloudmade API成功地在我的网站中实现了路由系统。我也想对OSRM路由系统(https://github.com/DennisOSRM/Project-OSRM)执行相同的操作,但是在获取OSRM json输出时遇到了一些麻烦。

以下是从cloudmade API检索json的示例:

使用$ .ajax-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)相同的坐标的url放入浏览器,以检索json文件。但是,无论我尝试过将其与$ .getJSON还是$ .ajax一起使用-使用回调,设置数据类型,我都无法获取json数据,这让我发疯了!而且我敢肯定,因为它已在API中进行了记录。

非常感谢任何帮助。

缺口

最佳答案

时间流逝,我想我会回答这个问题,以防万一有人遇到同样的问题。

OSRM的JSON响应与Cloudmade返回的响应不同。您问题中的OSRM Wiki实际上回答了该问题。 OSRM中的JSON已编码,因此您需要进行特殊处理。引用维基,


  路线的几何形状以编码形式传输。


长话短说,有人已经使我们变得容易。看一下这个:https://github.com/perliedman/leaflet-routing-machine

关于javascript - 为OSRM路由获取JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16120449/

10-09 13:00