Вызовите MapboxDirections () несколько раз внутри цикла - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю с Mapbox Direction API и получаю более 100 путевых точек. Согласно документации Mapbox, я не могу запросить более 25 WP для получения маршрута, поэтому я вызываю его внутри массива al oop с блоком 25 WP. Ниже приведен мой пример кода:

    componentDidMount(waypoints) {
        let wpChunks = this.chunkArray(waypoints, 25);

        for (let chunk of wpChunks) {
            routeArr.push(await this.callDirectionApi(chunk));
        }
        console.log('routeArr : ', routeArr);
    }

    callDirectionApi = (waypoints) => {
        let directions;
        directions = new MapboxDirections({
            accessToken: mapboxgl.accessToken,
            unit: 'metric',
            profile: 'mapbox/driving',
            interactive: false,
            controls: false,
            proximity: [88.30, 22.58]
        });

        this.map.on('load', (e) => {
            let wpIndex = 0;
            for (let ii = 0; ii <= waypoints.length-2; ii++) {
                if (ii == 0) {
                    directions.setOrigin(waypoints[ii]);
                } else {
                    directions.addWaypoint(wpIndex, waypoints[ii]);
                    wpIndex++;
                }
            }
            directions.setDestination(waypoints[waypoints.length-1]);

            directions.on('route', function(e) {
                **console.log('Routes: ', e.route);**
                resolve(e.route[0].geometry);
            });

            this.map.addControl(directions, 'top-left');
        });
    }

В результате, если я утешаю вывод журнала маршрута (жирная линия выше), я получаю тот же маршрут, что и ответ в каждом запросе внутри l oop ,

Может кто-нибудь подсказать, пожалуйста, я делаю что-то не так или нет? Это правильный способ сделать это? Если нет, можете ли вы предложить какой-нибудь пример?

Спасибо

1 Ответ

0 голосов
/ 11 апреля 2020

Вероятно, библиотека JS плохо работает с параллельными запросами. Вам следует либо адаптировать код для выполнения запросов один за другим, либо напрямую вызывать REST API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...