У меня есть проблема, чтобы найти службу маршрутизации для каждого пользователя здесь карта - PullRequest
0 голосов
/ 13 ноября 2018

Я использую здесь карту, чтобы найти маршрут нескольких пользователей и пункт назначения. Я набираю нью-йорк в строке поиска и нажимаю кнопку поиска, предположим, что API возвращает массив из десяти пользователей. Теперь я хочу получить услугу маршрутизации для каждого пользователя.

for(var i=0; i< aws_data.length; i++)
{

    aws_possition = 
    {
        lat: aws_data[i].lat,
        lng: aws_data[i].lng
    };
    lat2 = aws_possition.lat;
    lng2 = aws_possition.lng;

    var router = platform.getRoutingService(),
        parameters = {
                waypoint0: lat1+","+lng1,
                waypoint1: lat2+","+lng2,
                mode: 'fastest;car;traffic:enabled',
                departure: 'now'
        };
}

Теперь, когда я запускаю этот код, platform.getRoutingService запускается 10 раз, прежде чем дать мне результат каждого пользователя. Вот мой полный цикл кода.

   for(var i=0; i< aws_data.length; i++)
{

    aws_possition = 
    {
        lat: aws_data[i].lat,
        lng: aws_data[i].lng
    };
    lat2 = aws_possition.lat;
    lng2 = aws_possition.lng;

    var router = platform.getRoutingService(),
        parameters = {
                waypoint0: lat1+","+lng1,
                waypoint1: lat2+","+lng2,
                mode: 'fastest;car;traffic:enabled',
                departure: 'now'
        };
        console.log(parameters);
        //debugger;
    router.calculateRoute(parameters,
            function (result) {

            }


}

1 Ответ

0 голосов
/ 13 ноября 2018

Привет Фаррах и добро пожаловать в переполнение стека. Если вы используете этот API , то вы можете сопоставить свои данные с обещаниями (обратите внимание, что обещания должны быть заполнены для IE и (очень) старых браузеров)

const router = platform.getRoutingService(),
  waypoint1 = aws_possition.lat + ',' + aws_possition.lng,
  mode = 'fastest;car;traffic:enabled',
  departure = 'now';
Promise.all(
  aws_data.map(
    ({ lat, lng, id }) =>
      console.log(`processing ${id}`) ||
      new Promise((resolve, reject) =>
        router.calculateRoute(
          {
            waypoint0: lat + ',' + lng,
            waypoint1,
            mode,
            departure,
          },
          (result)=>resolve([id,result]),
          reject,
        ),
      ),
  ),
).then(
  (results) => console.log('I have results:', results),
  (error) => console.log('something went wrong:', error),
);
...