如何在 Here Maps 中沿途获得更多积分?
How to get more points along the route in Here Maps?
我在我的路线上得到了一组点,但在汽车在高速公路上的路径中,路段很远。我想获得更细粒度的路由。可能吗?
$.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 分钟得一分。这可能吗?
我认为有一种可能的解决方案,但这不是最优的。
我会在路由属性中添加形状作为请求的参数。并从响应中,迭代每两对 lat/long 来计算它们的路线。这会将段分解成更小的部分。不过,它仍然不像您在问题中提出的那样是最佳的。使用以开始为中心的基于时间或基于距离的等值线然后得到交叉点对我来说似乎很痛苦。希望有人对此有更好的解决方案。
要获取更细粒度的路由信息,可以请求组成路由的links
。为此,请添加值为 links
或 li
的 legattributes
查询参数。这将为每个路由中每个 leg
对象的响应添加一个 link
数组。此外,您可以使用 linkattributes
查询参数来决定要为每个 link
查看哪些信息。您可以包括 link
的长度和形状,以及用户沿路线到达此 link 时路线上的剩余时间或距离。还有许多其他可能性,您可以找到 here(查找 RouteLinkAttributeType)。
所以在您的代码中,这可能类似于:
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'
},
响应中返回的实际 link 类似于:
{
"linkId":"-733185668",
"shape":["52.5158286,13.3774424","52.5158286,13.3774424"],
"length":0,
"remainTime":249,
"speedLimit":13.8888893,
"_type":"PrivateTransportLinkType"
}
我在我的路线上得到了一组点,但在汽车在高速公路上的路径中,路段很远。我想获得更细粒度的路由。可能吗?
$.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 分钟得一分。这可能吗?
我认为有一种可能的解决方案,但这不是最优的。 我会在路由属性中添加形状作为请求的参数。并从响应中,迭代每两对 lat/long 来计算它们的路线。这会将段分解成更小的部分。不过,它仍然不像您在问题中提出的那样是最佳的。使用以开始为中心的基于时间或基于距离的等值线然后得到交叉点对我来说似乎很痛苦。希望有人对此有更好的解决方案。
要获取更细粒度的路由信息,可以请求组成路由的links
。为此,请添加值为 links
或 li
的 legattributes
查询参数。这将为每个路由中每个 leg
对象的响应添加一个 link
数组。此外,您可以使用 linkattributes
查询参数来决定要为每个 link
查看哪些信息。您可以包括 link
的长度和形状,以及用户沿路线到达此 link 时路线上的剩余时间或距离。还有许多其他可能性,您可以找到 here(查找 RouteLinkAttributeType)。
所以在您的代码中,这可能类似于:
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'
},
响应中返回的实际 link 类似于:
{
"linkId":"-733185668",
"shape":["52.5158286,13.3774424","52.5158286,13.3774424"],
"length":0,
"remainTime":249,
"speedLimit":13.8888893,
"_type":"PrivateTransportLinkType"
}