Eu gostaria de desenhar uma pista GPX em um mapa do Leaflet. A polilinha não deve ter apenas uma cor, mas eu gostaria de mostrar certos valores como altitude, velocidade, frequência cardíaca, temperatura, cadência, inclinação codificada por cores. Obviamente, apenas um valor pode ser visualizado de uma só vez.
Os valores seriam armazenados junto com L.LatLng
, por exemplo, em um meta: {ele: 298, hr: 155}
objeto.
Sou novo no Leaflet e estou especialmente preocupado em encontrar uma maneira eficiente de fazer isso. O primeiro que veio à mente foi criar centenas ou milhares de polilinhas, cada uma com uma cor especial. Mas isso parece muito ganancioso em relação à memória e à CPU.
Alguma ideia?
Um exemplo do que quero dizer pode ser visto aqui
Respostas:
Converta sua trilha GPX em um GeoJSON com QGIS.
Digamos que seu GeoJSON tenha esta aparência. O GeoJSON tem um atributo
elevation
com o valor da elevação.Adicione o seu GeoJSON com o seguinte código ao seu mapa de folhetos. Use uma função para estilizar seu arquivo. O
"color"
elemento chama a funçãoget color
e transmite oelevation
valor do seu recurso como um parâmetro.A função
getColor
retorna a cor com base no valor da elevação.Fiz um JSFiddle com o exemplo GeoJSON e as funções descritas acima: http://jsfiddle.net/2VY5z/1/
fonte
<path>
elementos sempre que a cor mudar. Infelizmente, não há como alterar a cor em um caminho:M184 398L187 395C#00FF00 L183 399
seria necessário para isso (C = cor).Eu criei um pequeno plugin para o Leaflet: Leaflet.MultiOptionsPolyline .
Aqui está uma captura de tela da página de demonstração :
Atualmente, está faltando documentação, mas a página de demonstração está vinculada ao código-fonte, que deve ser bastante auto-explicativo.
Seus comentários são bem-vindos (crie um problema no GitHub ou comente esta resposta se você não tiver uma conta no GitHub).
fonte
Parece que esse é o tópico antigo, mas espero que alguém ache isso útil.
Um plugin do Leaflet para desenhar gradientes coloridos ao longo de polilinhas. https://github.com/iosphere/Leaflet.hotline/
fonte