获取OSRM路由的JSON

问题描述:

我使用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中有记录。

任何帮助非常感谢。

尼克

试试这个: (其实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

这是一个jQuery的事情:新版本在默认情况下添加一个回调参数,以便您的网址最终结果如http://router.project-osrm.org/viaroute?loc=51.500,0.100&loc=51.500,0.1001&callback=jQuery1504317377423867583_1366895174226&_=1366895275399。 OSRM不喜欢这个。

有关如何防止此问题的建议,请参阅“why callback parameter is added to query string using jQuery AJAX request”的答案。

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

OSRM的JSON响应与Cloudmade返回的响应不同。您的问题中的OSRM维基实际上回答了这个问题。来自OSRM的JSON被编码,你需要特殊的处理。引用wiki,

路径的几何结构以编码形式传输。

长话短说,有人已经让我们轻松的事情。看看这个:https://github.com/perliedman/leaflet-routing-machine