Para adicionar uma trilha ao nosso mapa, vamos convertê-lo de um shapefile para GeoJSON. Há mais de uma maneira de fazer isso – você poderia usar ogr2ogr, mas optamos por usar o QGIS, pois ele não apenas o converteria, mas também transformaria o sistema de coordenadas ao mesmo tempo.
1. Convertendo para GeoJSON
Com o shapefile carregado no QGIS, podemos clicar com o botão direito na camada e escolher a opção “Export -> Save Features As…”

Escolhemos o sistema de coordenadas apropriado ( EPSG:4326 – WGS 84) para uso com o Leaflet e o QGIS faz a conversão enquanto salva no GeoJSON. Isso torna nossa trilha pronta para uso no Leaflet.
2. Adicionando o arquivo
O arquivo GeoJSON precisa ser adicionado ao nosso arquivo HTML como um script, mas primeiro precisamos modificá-lo adicionando um nome de variável:
var trail = {
"type": "FeatureCollection",
"name": "rails",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::3857" } },
"features": [
...
Adicionando o var trail ao início do arquivo nos permitirá fazer referência a ele no Leaflet.
Em seguida, adicionamos o script e agora podemos adicioná-lo ao mapa:
var trail = L.geoJSON(trail); trail.addTo(map);
3. Estilizando a trilha
Podemos mudar a aparência da trilha adicionando opções à declaração L.geoJSON:
var thetrail = L.geoJSON(trail, {
color: '#800000',
weight: 3,
dashArray: '12 8 12',
});
Isso transforma a trilha em vermelho escuro, aumentando sua largura para 3 pixels e criando uma linha tracejada.
4. Adicionando rótulo
Ao adicionar este rótulo quando se passa o mouse sobre a trilha o mesmo é apresentado na tela:
thetrail.bindTooltip('Trilha de Brumadinho')
5. Resultado
Após nossas mudanças o resultado do nosso mapa agora é esse:

6. Código
Após as alterações realizadas acima, o nosso código ficou da seguinte forma:
<!DOCTYPE html>
<head>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.4.0/dist/leaflet.css"
integrity="sha512-puBpdR0798OZvTTbP4A8Ix/l+A4dHDD0DGqYW6RQ+9jxkRFclaxxQb/SJAWZfWAkuyeQUytO7+7N4QKrDh+drA=="
crossorigin=""/>
<script src="https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"
integrity="sha512-QVftwZFqvtRNi0ZyCtsznlKSWOStnDORoefr1enyq5mVL4tmKB3S/EnC3rRJcxCPavG10IcrVGSmPh6Qw5lwrg=="
crossorigin=""></script>
<script src="rails.geojson"></script>
<style>
#mapDIV{
height: 700px;
width: 700px;
border: solid 1px black;
}
</style>
</head>
<body>
<div id='mapDIV'></div>
<script>
var map = L.map(document.getElementById('mapDIV'), {
center: [-20.1438, -44.1301],
zoom: 15
});
var basemap = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
});
basemap.addTo(map);
var earthquakeMarker = L.marker([-20.1438, -44.1301],
{title: 'Janeiro 25, 2019 Desastre de Brumadinho'});
earthquakeMarker.bindPopup(
"Janeiro 25, 2019<br> Desastre de Brumadinho");
earthquakeMarker.addTo(map);
var thetrail = L.geoJSON(trail, {
color: '#800000',
weight: 3,
dashArray: '12 8 12',
});
thetrail.bindTooltip('Trilha de Brumadinho');
thetrail.addTo(map);
</script>
</body>
</html>
Se você quiser, pode ver o processo detalhado acima no YouTube: