我的路线上有一组积分,但在汽车在高速公路上的路径上,这些路段很远。我想得到一个更精细的路由粒度。有可能吗?
$.ajax({
url: 'https://route.cit.api.here.com/routing/7.2/calculateroute.json',
type: 'GET', dataType: 'jsonp', jsonp: 'jsoncallback',
data: {
waypoint0: '59.159486,17.645687',
waypoint1: "59.397635,17.891626",
mode: 'fastest;car;traffic:enabled',
app_id: 'VXZP5fwHfh2WQIWnp0Zx',
app_code: 'NgKq-kVEUMKxxNpBKP_hBg',
departure: 'now'
},
success: function (data) {
moves = data.response.route[0].leg[0].maneuver;
timeAvailable = 45;
trackPoints = moves.map(function (d) { return {
lat: d.position.latitude,
lng: d.position.longitude,
time = d.travelTime }; });
for (var i = 0; i < trackPoints.length; i++) {
smackUpArea(map, trackPoints[i], timeAvailable);
timeAvailable -= trackPoints[i].time;
};
}
})
最理想的是,我希望每隔x公里或每隔y分钟就能得到一分。这有可能吗?
答案 0 :(得分:2)
要获得更细粒度的路由信息,您可以请求组成路由的links
。为此,请添加值为legattributes
或links
的{{1}}查询参数。这将为每个路由中的每个li
对象的响应添加link
数组。此外,您可以使用leg
查询参数决定要为每个link
查看哪些信息。您可以包含linkattributes
的长度和形状等内容,以及用户沿路径到达此链接时路线上的剩余时间或距离。您还可以找到许多其他可能性here(查找 RouteLinkAttributeType )。
因此,在您的代码中,这可能类似于:
link
响应中返回的实际链接类似于:
data: {
waypoint0: '59.159486,17.645687',
waypoint1: "59.397635,17.891626",
mode: 'fastest;car;traffic:enabled',
app_id: 'VXZP5fwHfh2WQIWnp0Zx',
app_code: 'NgKq-kVEUMKxxNpBKP_hBg',
departure: 'now',
legattributes: 'li',
linkattributes: 'le,rt'
},
答案 1 :(得分:0)
我认为有一种可能的解决方案,但这不是最佳的。 我会在路由属性中添加形状作为请求的参数。并且从响应中,遍历每两对lat / long来计算它们的路径。这会将细分分解成更小的部分。它仍然不像你在问题中提到的那样最优。使用基于时间或基于距离的等值线以起点为中心然后让交叉点对我来说是痛苦的。希望有人有更好的解决方案。