0

我正在创建一个地图,然后是一条路线,使用 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);
  });
 
}
4

0 回答 0