Карта Bing: событие DirectionUdated модуля Direction генерирует ошибку.Мы не можем найти маршруты между одной или несколькими путевыми точками - PullRequest
0 голосов
/ 17 июня 2019

Bing Map Direction Manager выдает ошибку при событии directionsUpdated.

Когда я пытаюсь нарисовать маршрут, используя известный источник и пункт назначения по широте и длине с адресом, он не рисует маршрут на карте, а просто показывает источник изначок назначения и выбросить следующую ошибку.

Ошибка: мы не можем найти направления между одной или несколькими путевыми точками.

Код ответа: 1

enter image description here

Ниже приведен код метода LoadDirection.

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', (e) => {

  this.directionsManager = new Microsoft.Maps.Directions.DirectionsManager(this.detailMap);
  this.directionsManager.clearAll();
  // Set Route Mode to driving
  this.directionsManager.setRequestOptions({
    routeMode: Microsoft.Maps.Directions.RouteMode.driving,
    routeDraggable: false
  });

  this.directionsManager.setRenderOptions({
    drivingPolylineOptions: {
      strokeThickness: 3
    }
  });

  this.directionsManager.setRenderOptions({
    firstWaypointPushpinOptions: { visible: false },
    lastWaypointPushpinOptions: { visible: false },
    waypointPushpinOptions: { visible: false }
  });

  const waypoint1 = new Microsoft.Maps.Directions.Waypoint({
    address: '2115 Beall St, Houston, TX 77008, US',
    location: new Microsoft.Maps.Location(29.8052803, -95.4181495), icon: ''
  });

  const waypoint2 = new Microsoft.Maps.Directions.Waypoint({
    address: '4231 Brightwood Dr, Houston, TX 77068, US',
    location: new Microsoft.Maps.Location(30.00005, -95.50392)
  });

  this.directionsManager.addWaypoint(waypoint1);
  this.directionsManager.addWaypoint(waypoint2);


  // Add event handler to directions manager.
  Microsoft.Maps.Events.addHandler(this.directionsManager, 'directionsUpdated', function (e) {
    console.log(e);
    this.detailPathLayer.clear();

    const routeIndex = e.route[0].routeLegs[0].originalRouteIndex;
    const nextLocation = e.route[0].routePath[routeIndex + 1];
    const pinLocation = pin.getLocation();
    const nextCoord = this.CalculateNextCoord(pinLocation, nextLocation);

  });

  Microsoft.Maps.Events.addHandler(this.directionsManager, 'directionsError', function (e) {
    console.log('Error: ' + e.message + '\r\nResponse Code: ' + e.responseCode);
  });

  this.directionsManager.calculateDirections();

});

1 Ответ

0 голосов
/ 18 июня 2019

Не должно возникнуть никаких проблем при поиске маршрута между двумя указанными вами пунктами. Этот автономный код, приведенный ниже, работает нормально, с аргументом события directionsUpdated, напечатанным в консоли (обратите внимание, что для кнопок путевой точки заданы невидимые параметры рендеринга):

var map = new Microsoft.Maps.Map(<CREATE_YOUR_MAP>);

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', (e) => {

  this.directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);
  this.directionsManager.clearAll();
  // Set Route Mode to driving
  this.directionsManager.setRequestOptions({
    routeMode: Microsoft.Maps.Directions.RouteMode.driving,
    routeDraggable: false
  });

  this.directionsManager.setRenderOptions({
    drivingPolylineOptions: { strokeThickness: 3 },
    firstWaypointPushpinOptions: { visible: false },
    lastWaypointPushpinOptions: { visible: false },
    waypointPushpinOptions: { visible: false }
  });

  const waypoint1 = new Microsoft.Maps.Directions.Waypoint({
    address: '2115 Beall St, Houston, TX 77008, US',
    location: new Microsoft.Maps.Location(29.8052803, -95.4181495), icon: ''
  });

  const waypoint2 = new Microsoft.Maps.Directions.Waypoint({
    address: '4231 Brightwood Dr, Houston, TX 77068, US',
    location: new Microsoft.Maps.Location(30.00005, -95.50392)
  });

  this.directionsManager.addWaypoint(waypoint1);
  this.directionsManager.addWaypoint(waypoint2);

  Microsoft.Maps.Events.addHandler(this.directionsManager, 'directionsUpdated', function (e) {
    console.log(e);
  });

  Microsoft.Maps.Events.addHandler(this.directionsManager, 'directionsError', function (e) {
    console.log('Error: ' + e.message + '\r\nResponse Code: ' + e.responseCode);
  });

  this.directionsManager.calculateDirections();
});

Можете ли вы проверить, действительно ли ошибка возникла между этими двумя точками? Все ли происходит в направлениях обработчика обновлений преднамеренно? (например, CalculateNextCoord?)

...