我正在创建一个地图,然后是一条路线,使用 RouteService V8,所以我从 routeservice 获取结果,分段创建折线,然后显示在地图中。我想知道当我设置目的地时,如何使这条路线像这里的 wego 平台一样可拖动,并且可以通过点击线路并拖动来更改路线来更改路线。我看到了一个类似我的问题,但我无法理解代码。这个问题 我不明白替代方案是什么以及如何处理可拖动的折线,请注意,我不想改变我的起点、目的地点,也不想改变我的通孔,只是点之间的“腿”。
我创建和显示路线的代码:
var map;
var platform = new H.service.Platform({ apikey: mykey });
var defaultLayers = platform.createDefaultLayers();
map = new H.Map(document.getElementById("map"), defaultLayers.vector.normal.map, {
center: { lat: centerLat, lng: centerLong },
zoom: 13,
pixelRatio: window.devicePixelRatio || 1,
});
window.addEventListener("resize", () => map.getViewPort().resize());
behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
uiMapa = H.ui.UI.createDefault(map, defaultLayers);
map.addEventListener( "tap",function (evt) {
},false);
...
function genereteRoute() {
var routingParameters = {
routingMode: "fast",
transportMode: "car",
origin: origin,
via: new H.service.Url.MultiValueQueryParameter(vias),
destination: destination,
return: "polyline,summary,routeHandle",
};
// CALLBACK
var onResult = function (result) {
console.log("result:" + JSON.stringify(result));
if (result.routes.length) {
result.routes[0].sections.forEach((section) => {
let linestring = H.geo.LineString.fromFlexiblePolyline(section.polyline);
let routeLine = new H.map.Polyline(linestring, {
style: { strokeColor: "blue", lineWidth: 3 },
});
linhaRota.push(routeLine);
map.addObjects([routeLine]);
});
}
calcularTempoDistancia(result.routes[0]);
};
var router = platform.getRoutingService(null, 8);
router.calculateRoute(routingParameters, onResult, function (error) {
alert(error.message);
});
}