Visualizza i tuoi dati su mappa con Leaflet

Leaflet è una libreria Javascript open source di mappe web che si pone come alternativa all’utilizzo delle api di Google Maps.

Attraverso Leaflet è possibile creare in maniera molto semplice delle mappe accattivanti visualizzando i dati che più ci interessano.

Nel tutorial di oggi realizzeremo una semplice pagina HTML che visualizza una mappa con uno sfondo OpenStreetMap e con un insieme di marker che rappresentano altrettanti punti di interesse caricati da un file esterno “poi.json”.

Il formato dei dati che rappresentano i nostri punti di interesse deve essere di tipo JSON e il tracciato deve prevedere tre campi:

  • titolo
  • longitudine
  • latitudine

Le coordinate (longitudine e latitudine) devono essere espresse nel sistema di riferimento WGS84 (quello che utilizza Google Maps per intenderci).
Per ricavare le coordinate di un punto è possibile utilizzare Google Maps, ricercare il punto di interesse, quindi cliccare col tasto destro del mouse sul marker rosso che Google Maps disegnerà sul punto.
A quel punto sul menu contestuale, cliccando sui valori di coordinate è possibile copiarli negli appunti.

Per creare il file json, ho predisposto un Foglio Google nel quale inserire i dati di proprio interesse in maniera tabellare, compilando tutti i campi previsti.
Dopo aver inserito i dati è sufficiente richiamare la funzione “Genera JSON” accessibile dal menu “codexamples.cloud” e copiare il contenuto della prima cella del foglio “JSON” su un file di testo.

Per vedere l’esempio in funzione clicca sul link che segue:

Demo

Di seguito, invece, il codice sorgente dell’esempio.

<!DOCTYPE html>
 <html lang="en">
 <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.3/dist/leaflet.css"
    integrity="sha256-kLaT2GOSpHechhsozzB+flnD+zUyjE2LlfWPgU04xyI="
    crossorigin=""/>
   

    <script src="https://unpkg.com/leaflet@1.9.3/dist/leaflet.js"
    integrity="sha256-WBkoXOwTeyKclOHuWtc+i2uENFpDZ9YPdf5Hf+D7ewM="
    crossorigin=""></script>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>


    <title>codexamples.cloud - Esempio leaflet</title>
 </head>
 <body>
    <div id="map"></div>


    <style>
        #map { width: 800px; height: 600px; }
    </style>
    <script type="text/javascript">
        const map = L.map('map').setView([39.21701983248819, 9.116778156691952], 13);

        const osm = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
            attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
        }).addTo(map);

        $(document).ready(function(){

            $.ajax({
                type: "GET",
                dataType: "json",
                url: "poi.json",
                success: function (data) {
                    
                    for (var i in data) {
                        var row = data[i];

                        var marker = L.marker([parseFloat(row.latitudine), parseFloat(row.longitudine)], {
                            opacity: 1
                        }).bindPopup(row.titolo);
                        
                        marker.addTo(map);
                    }

                },
                error: function (error) {
                    alert("Errore inaspettato");
                }
            });

        });


    </script>
 </body>
 </html>