Я хочу установить маршрут несколько раз на моей карте, основываясь на некоторых маркерах широты и долготы.
setOrigin()
и setDestination()
отлично работает при вызове при загрузке карты:
var directions = new MapboxDirections({
accessToken: mapboxgl.accessToken
});
map.addControl(directions,'top-left');
map.on('load', function() {
directions.setOrigin([12, 23]);
directions.setDestinaion([11, 22]);
})
Но когда я вызываю его позже, например, на карте moveend
, поле ввода источника пытается определить местоположение навсегда, и я получаю бесконечное значение l oop (в исходном вводе есть значок загрузки, и консоль печатает журналы от moveend
функция навсегда)
РЕДАКТИРОВАТЬ: добавлено больше информации
Мой фрагмент кода
mymap.on('moveend', async function () {
if (old_zoom === mymap.getZoom()) {
let coords = mymap.getCenter();
console.log(coords); // it is printed inifnitely, until Chrome crashes
directions.setOrigin('19.969415,50.061824');
directions.setDestination('19.9242978306511,50.0401092');
});
Я думаю, что это происходит сбой, потому что, когда я установить начало и пункт назначения, маршрут отображается, и есть анимация, которая перемещает карту, поэтому moveend
событие запускается и т. д.
Так что я думаю, что решение здесь будет заключаться в остановке MapboxDirections
от перемещения моей карты при создании маршрута, потому что моя концепция заключается в setOrigin()
каждый раз, когда пользователь прекращает перемещение карты (исходная точка всегда находится в центре карты)