Mais

Leaflet-routing-machine adicionar pontos de referência, resumo de roteamento

Leaflet-routing-machine adicionar pontos de referência, resumo de roteamento


Estou brincando com leaflet-routing-machine (https://github.com/perliedman/leaflet-routing-machine) e tenho 2 perguntas sobre seu uso:

1)

Eu tenho o seguinte código agora

routeControl = L.Routing.control ({waypoints: [L.latLng (48.133205,11.565225), L.latLng (48.131830,11.588227)], useZoomParameter: false, autoRoute: false,}). addTo (map);

que funciona bem, mas e quando eu quiser começar sem nenhum ponto de referência? Quando deixo de fora os pontos de referência do construtor e tento adicioná-los com

routeControl.spliceWaypoints (0, 0, e.latlng);

o roteamento não está funcionando mais (eu sei, preciso iniciar o roteamento manualmente, porque defini autoRoute como falso). Mas se eu começar com esses pontos iniciais e adicionar mais waypoints, o roteamento está funcionando.

2) Estou tentando obter totalDistance, que faz parte da Interface IRouteSummary.

De acordo com a API, preciso acessar a interface do IRoute, mas não descobri como obter o IRoute em L.Routing.Control

Encontrei este post (https://stackoverflow.com/questions/26570980/getting-distance-between-2-markers) que usa uma matriz de rotas [], mas também não sei como obter essa matriz ?! Também se refere a este tutorial http://www.liedman.net/leaflet-routing-machine/tutorials/interaction/, mas aqui não encontro nenhuma informação sobre como acessar esse array também.


Eu posso responder a 2ª parte da sua pergunta, a primeira me deixou um pouco amarrado agora também vou editar se ninguém responder quando eu colocar minha cabeça em volta dela. Portanto, para 2) basta usar algo na linha de

routeControl._routes [0] .summary.totalDistance

Veja se isso funciona, também _routes [0] representa sua escolha, por exemplo, se você tem outra opção de roteamento para a qual deseja descobrir a distância _routes [1] é a sua resposta ... integre isso em uma função e pronto.

Edit: Em relação ao seu primeiro problema ao começar sem uma rota, chame o seguinte:

L.routing.control. ({Waypoints: [null]})

E supondo que você deseja adicionar novos pontos de passagem

L.routing.control.setWaypoints ([L.latLng (lat1, lon1), L.latLng (lat2, lon2)]);

Esta sintaxe é realmente muito estranha, mas abra um inspetor de código e você pegará o jeito.


A solução de limpeza acima não funciona para mim. No entanto, descobri uma maneira mais limpa de limpar a rota com o seguinte comando:

routeControl.getPlan (). setWaypoints ({latLng: L.latLng ([0, 0])});

OnderouteControlé a instância deL.routing.control.


Sobre a 2ª parte_routesnão pode ser acessado diretamente, mas você pode usar o rotas encontradas evento logo depois.addTo (mapa)função:

routeControl.on ('routesfound', function (e) {distance = e.routes [0] .summary.totalDistance; time = e.routes [0] .summary.totalTime;});

Assista o vídeo: Mapy Google Jak Dodać Przystanki Trasy? Punkty Pośrednie Planowanie Trasy. ForumWiedzy