Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с API картами Leaflet (https://javascript.ru/forum/misc/82268-pomogite-s-api-kartami-leaflet.html)

jazz13666 11.04.2021 13:09

Помогите с 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();

destus 11.04.2021 14:54

jazz13666,
можно расстояние измерять между точками
https://leafletjs.com/reference-1.7.1.html#map-distance


Часовой пояс GMT +3, время: 17:40.