Javascript API 的 HERE 地图:计算到当前地理位置的最近路由操作
HERE Maps for Javascript API: Calculate closest routing maneuver to the current geo position
我正在使用 HERE Maps JS API。我可以根据起点和终点位置请求路线。现在,该路线在单个响应中显示所有机动,如下图所示。如何根据当前位置的纬度和经度计算select的机动?
您应该遍历 maneuver
数组并使用 H.geo.Point#distance 方法检查机动位置与所需地理位置之间的距离,如下所示:
// ...
// assuming we're in calculateRoute response callback
// and result is callback's parameter
var maneuver = result.response.route[0].leg[0].maneuver,
testPosition = {lat: 50, lng: 13},
closestManeuver,
closestManeuverPoint,
minDistance = Infinity;
// calculate the closest maneuver
maneuver.forEach(function(man) {
let currManeuverPoint = new H.geo.Point(
man.position.latitude,
man.position.longitude
),
currDistance = currManeuverPoint.distance(testPosition);
if (currDistance < minDistance) {
minDistance = currDistance;
closestManeuver = man;
closestManeuverPoint = currManeuverPoint;
}
});
console.log('closest maneuver (%s m) is at: {lat: %s, lng: %s}: \n %s', Math.round(minDistance), closestManeuverPoint.lat, closestManeuverPoint.lng, closestManeuver.instruction);
我创建了简单的 jsfiddle 示例,它显示了柏林的一条路线,并在每次鼠标单击时计算最近的机动点(呈现为标记)。检查控制台日志以获取有关最近机动点的详细信息。
我正在使用 HERE Maps JS API。我可以根据起点和终点位置请求路线。现在,该路线在单个响应中显示所有机动,如下图所示。如何根据当前位置的纬度和经度计算select的机动?
您应该遍历 maneuver
数组并使用 H.geo.Point#distance 方法检查机动位置与所需地理位置之间的距离,如下所示:
// ...
// assuming we're in calculateRoute response callback
// and result is callback's parameter
var maneuver = result.response.route[0].leg[0].maneuver,
testPosition = {lat: 50, lng: 13},
closestManeuver,
closestManeuverPoint,
minDistance = Infinity;
// calculate the closest maneuver
maneuver.forEach(function(man) {
let currManeuverPoint = new H.geo.Point(
man.position.latitude,
man.position.longitude
),
currDistance = currManeuverPoint.distance(testPosition);
if (currDistance < minDistance) {
minDistance = currDistance;
closestManeuver = man;
closestManeuverPoint = currManeuverPoint;
}
});
console.log('closest maneuver (%s m) is at: {lat: %s, lng: %s}: \n %s', Math.round(minDistance), closestManeuverPoint.lat, closestManeuverPoint.lng, closestManeuver.instruction);
我创建了简单的 jsfiddle 示例,它显示了柏林的一条路线,并在每次鼠标单击时计算最近的机动点(呈现为标记)。检查控制台日志以获取有关最近机动点的详细信息。