Показать сообщение отдельно
  #1 (permalink)  
Старый 11.04.2021, 13:09
Новичок на форуме
Отправить личное сообщение для jazz13666 Посмотреть профиль Найти все сообщения от jazz13666
 
Регистрация: 09.04.2021
Сообщений: 2

Помогите с API картами Leaflet
Добрый день, хочу сделать подобие навигатора на картах, не могу придумать как убрать промежуточную точку при ее достижении пользователем, изначально делал poliLine, в которой первая точка было текущей локацией пользователя, все ок, но когда нужно изогнуть путь, то промежуточная точка не убирается после того как пользователь ее пересекает, а ведет в обратную сторону.
Пробовал через routing-machine, в принципе идея плохая т.к. маршрут строится по дорогам, а мне нужен пешеходный маршрут, да и вообще его сложно контролировать, poliline был бы отличным решением, если бы получалось менять его координаты, на подобие:
изначально
var latlngs = [
    (e.latlng), <!--Точка текущей локации, она же "А"-->
    [37.77, -122.43], <!--Путевая точка для смены направления линии "В"-->
    [34.04, -118.2] <!-- Конечная точка маршрута "С"-->
    ];

Не могу найти условия вхождения в радиус например, или какого то, при котором понятно, что точка "А", находится достаточно близко к "В", и конструкция заменялась бы на следующий вид.
var latlngs = [
    (e.latlng), <!--Точка текущей локации, она же "А"-->
    [34.04, -118.2] <!-- Конечная точка маршрута "С"-->
    ];

Сейчас маршрут через роутинг, это вообще дич полная, но для примера выложу.
function initializeMapAndLocator(){
        
        var map = L.map('map_one')
        
            googleStreets = L.tileLayer('https://{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}',{
                    maxZoom: 20,
                    subdomains:['mt0','mt1','mt2','mt3']
                }).addTo(map);
            
                            map.locate({ 
                                 setZoom: 16, 
                                 watch:true,
                                 enableHighAccuracy:true
                               });
             var marker = L.marker([51.6693, 39.2051],).addTo(map);

                function onLocationFound(e) {
L.Routing.control({
    addWaypoints:false,
    draggableWaypoints:false,
    geocoder:false,
    waypoints: [
        L.latLng(e.latlng),
        L.latLng(51.6693, 34.2051),
        L.latLng(51.6693, 39.2051),
    ]
}).addTo(map);
                }
                            
        map.on('locationfound', onLocationFound);
        
        }


    initializeMapAndLocator();
Ответить с цитированием