Leaflet

Remi Forax

Leaflet ?

“It allows developers without a GIS background to display tiled web maps hosted on a public server, with optional tiled overlays.”

source: Wikipedia.org - Geomatics

Installer leaflet

Leaflet est composée d'un fichier CSS et d'un fichier JavaScript.
On déclare ceux-ci dans la balise "head" de la page.


<head>
  ...
  <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" crossorigin=""/>
  <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" crossorigin=""></script>
</head>
					

Le fichier CSS doit être AVANT le fichier JS !

Une Carte (map)

On déclare un div qui va contenir la carte


                      <div id="map-id"></div>
                    

On appele la méthode map() sur l'objet L (pour leaflet) avec en premier paramètre l'id du div

La méthode L.map()

C'est équivalent à appeler la méthode map() avec le résultat de document.getElementById()


                      <div id="map-id2"></div>
                    

L.map(id, options)

Une map doit avoir un "center" [lat, long] et un facteur de "zoom"

Le layer de tuile

L.tileLayer() permet de créer un layer utilisant des tuiles
On peut spécifier le tableau des layers dans les options de la map

Ajouter un layer

On peut ajouter un layer après la création de la map avec layer.addTo(map)

Les tuiles de Google Maps

On peut changer de provider et par exemple utiliser les tuiles de GoogleMap


Leaflet using GoogleMap

Les autres tuiles

Le site https://leaflet-extras.github.io/leaflet-providers/preview/
possède plein d'autres références de tuiles.

Control

Lors de la création de la map, on peut indiquer si on veut les différents controls (zoom, attribution)


Attention, la plupart des tuiles demandent une attribution !

Ajouter un marker

Un marker permet de distinguer un point précis de la carte

Ajouter un tooltip

Un tooltip est un texte avec un contenu

Un marker avec un tooltip

marker.bindTooltip() permet d'ajouter un tooltip qui sera visible si on passe la souris dessus (hover)

Objets Géométriques

On peut ajouter des objets géométriques pour indiquer une zone particulière

GeoJSON

GeoJSON ?

“an open standard format designed for representing simple geographical features, along with their non-spatial attributes”

source: Wikipedia.org - GeoJSON

Exemple de fichier GeoJSON

Une feature groupe une géométrie et des propriétés.

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [1.9221462784913, 48.457599361977],
            ...
            [1.9221462784913, 48.457599361977]
          ]
        ]
      },
      "properties": {
        "code": "11",
        "nom": "Île-de-France"
      }
    }, ...
			    	  

Layer GeoJSON

La méthode L.geoJSON() permet de créer un layer à partir des données geoJSON