有没有办法在两点之间的 MapQuest 路线中获取点的一些坐标?
Is there a way to get some coordinates of the points in a MapQuest route between two points?
我设法通过 leaflet 和 mapquest 获得了两点之间的优化路线。这是为此的代码:
dir = MQ.routing.directions();
dir.optimizedRoute({
locations: [
start,
end
]
});
CustomRouteLayer = MQ.Routing.RouteLayer.extend({
createStartMarker: (location) => {
const marker = L.marker(location.latLng).addTo(mymap);
return marker;
},
createEndMarker: (location) => {
const marker = L.marker(location.latLng, { icon: redIcon }).addTo(mymap);
return marker;
}
});
mymap.addLayer(new CustomRouteLayer({
directions: dir,
fitBounds: true,
}));
结果是这样的:
但是我没能得到这条路线中某些点的坐标。我需要这些点,因为我想制作一个对象如何穿过直线的“动画”。
我曾经使用 OSRM,而不是 MapQuest,但是阅读他们的文档让我建议您也使用 MapQuest 的 Route Shape endpoint (GET) 来获取形状节点坐标。
使用路由函数回调选项来处理路由响应。获得形状点后,您可能需要解压缩它们。这是我的做法。
L.mapquest.directions().route({
start: 'Denver,CO',
end: 'Boulder,CO',
},function(x,data){console.log(data.route.shape.shapePoints)});
通过监听 MQ.routing.directions().optimizedRoute() 的 'success' 事件,我设法获得了方向列表中的点列表。这个事件被触发了 2 次,但只有第二次它的形状是 属性.
dir.on('success', function (e) {
if (e.route.shape) {
arrLocations.push(...e.route.shape.shapePoints)
console.log(arrLocations);
resolve(arrLocations);
}
})
我设法通过 leaflet 和 mapquest 获得了两点之间的优化路线。这是为此的代码:
dir = MQ.routing.directions();
dir.optimizedRoute({
locations: [
start,
end
]
});
CustomRouteLayer = MQ.Routing.RouteLayer.extend({
createStartMarker: (location) => {
const marker = L.marker(location.latLng).addTo(mymap);
return marker;
},
createEndMarker: (location) => {
const marker = L.marker(location.latLng, { icon: redIcon }).addTo(mymap);
return marker;
}
});
mymap.addLayer(new CustomRouteLayer({
directions: dir,
fitBounds: true,
}));
结果是这样的:
但是我没能得到这条路线中某些点的坐标。我需要这些点,因为我想制作一个对象如何穿过直线的“动画”。
我曾经使用 OSRM,而不是 MapQuest,但是阅读他们的文档让我建议您也使用 MapQuest 的 Route Shape endpoint (GET) 来获取形状节点坐标。
使用路由函数回调选项来处理路由响应。获得形状点后,您可能需要解压缩它们。这是我的做法。
L.mapquest.directions().route({
start: 'Denver,CO',
end: 'Boulder,CO',
},function(x,data){console.log(data.route.shape.shapePoints)});
通过监听 MQ.routing.directions().optimizedRoute() 的 'success' 事件,我设法获得了方向列表中的点列表。这个事件被触发了 2 次,但只有第二次它的形状是 属性.
dir.on('success', function (e) {
if (e.route.shape) {
arrLocations.push(...e.route.shape.shapePoints)
console.log(arrLocations);
resolve(arrLocations);
}
})