AngularJS - Application Leaflet : Guide pour débutants
Bonjour, futurs superstars du codage ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde d'AngularJS et de Leaflet. Ne vous inquiétez pas si ces termes vous semblent étrangers maintenant - d'ici la fin de ce tutoriel, vous parlevez couramment le "web map" en un rien de temps !
Qu'est-ce que AngularJS et Leaflet ?
Avant de plonger dans le code, définissons ce que sont ces technologies :
AngularJS
AngularJS est un puissant framework JavaScript qui nous aide à construire des applications web dynamiques. Pensez à lui comme un assistant super-intelligent qui organise votre code et rend votre site web interactif.
Leaflet
Leaflet est une bibliothèque JavaScript open-source pour des cartes interactives mobiles. C'est comme Google Maps, mais vous êtes le patron et vous décidez exactement à quoi votre carte ressemble et comment elle fonctionne !
Maintenant que nous avons fait les présentations, mettons les mains à la pâte et commencer à construire notre propre application de carte !
Configuration de notre projet
Premierement, nous devons configurer notre projet. Ne vous inquiétez pas, c'est plus simple que monter du mobilier IKEA !
Étape 1 : Créer le fichier HTML
Créez un nouveau fichier appelé index.html
et collez le code suivant :
<!DOCTYPE html>
<html ng-app="leafletApp">
<head>
<title>Mon incroyable application de carte</title>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>
<style>
#map { height: 400px; }
</style>
</head>
<body ng-controller="MapController">
<div id="map"></div>
<script src="app.js"></script>
</body>
</html>
Ce fichier HTML est comme le squelette de notre application. Il inclut toutes les bibliothèques nécessaires (AngularJS et Leaflet) et configure un div où notre carte vivra.
Étape 2 : Créer le fichier JavaScript
Maintenant, créons notre fichier app.js
. C'est là que la magie opère !
var app = angular.module('leafletApp', []);
app.controller('MapController', function($scope) {
var map = L.map('map').setView([51.505, -0.09], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© Contributeurs OpenStreetMap'
}).addTo(map);
L.marker([51.5, -0.09]).addTo(map)
.bindPopup('Une jolie popup CSS3.<br> Facilement personnalizable.')
.openPopup();
});
Reprenons cela :
- Nous créons un module AngularJS appelé 'leafletApp'.
- Nous définissons un contrôleur appelé 'MapController'.
- À l'intérieur du contrôleur, nous initialisons une carte Leaflet, définissons sa vue sur Londres (vous pouvez changer cela pour n'importe quelles coordonnées que vous aimez), et ajoutons une couche de tuiles provenant d'OpenStreetMap.
- Enfin, nous ajoutons un marqueur à notre carte avec une popup.
Comprendre le code
Maintenant que nous avons notre carte de base en marche, explorons plus en détail ce que fait chaque partie de notre code.
Le fichier HTML
<html ng-app="leafletApp">
Cette ligne indique à AngularJS que cet élément est la racine de notre application. Tout élément à l'intérieur de celui-ci sera géré par AngularJS.
<body ng-controller="MapController">
Cette ligne associé notre MapController au corps de notre HTML. Cela signifie que toute la logique que nous définissons dans notre MapController sera disponible dans le corps.
<div id="map"></div>
C'est où notre carte sera rendue. Leaflet utilisera ce div pour créer la carte.
Le fichier JavaScript
var app = angular.module('leafletApp', []);
Cette ligne crée un nouveau module AngularJS. Pensez à un module comme un conteneur pour différentes parties de votre application.
app.controller('MapController', function($scope) {
// Logique du contrôleur ici
});
C'est où nous définissons notre MapController. Le $scope est un objet spécial qui agit comme un pont entre le contrôleur et la vue (notre HTML).
var map = L.map('map').setView([51.505, -0.09], 13);
Cette ligne initialise notre carte Leaflet. 'map' est l'id de notre div, [51.505, -0.09] sont les coordonnées pour le centre de notre carte (latitude et longitude), et 13 est le niveau de zoom.
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© Contributeurs OpenStreetMap'
}).addTo(map);
Cela ajoute une couche de tuiles à notre carte. Les couches de tuiles sont les images réelles de la carte. Ici, nous utilisons des tuiles OpenStreetMap.
L.marker([51.5, -0.09]).addTo(map)
.bindPopup('Une jolie popup CSS3.<br> Facilement personnalizable.')
.openPopup();
Cela ajoute un marqueur à notre carte aux coordonnées spécifiées, lie une popup à ce marqueur, et ouvre la popup.
Ajouter de l'interactivité
Maintenant que nous avons notre carte de base, faisons-la plus interactive ! Nous allons ajouter une fonctionnalité qui permet aux utilisateurs de cliquer sur la carte pour ajouter de nouveaux marqueurs.
Mettez à jour votre fichier app.js
comme suit :
var app = angular.module('leafletApp', []);
app.controller('MapController', function($scope) {
var map = L.map('map').setView([51.505, -0.09], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© Contributeurs OpenStreetMap'
}).addTo(map);
$scope.markers = [];
map.on('click', function(e) {
var marker = L.marker(e.latlng).addTo(map);
$scope.markers.push(marker);
$scope.$apply();
});
$scope.removeMarkers = function() {
$scope.markers.forEach(function(marker) {
map.removeLayer(marker);
});
$scope.markers = [];
};
});
Maintenant, mettez à jour votre index.html
pour inclure un bouton pour supprimer les marqueurs :
<body ng-controller="MapController">
<div id="map"></div>
<button ng-click="removeMarkers()">Supprimer tous les marqueurs</button>
<script src="app.js"></script>
</body>
Reprenons ce que nous avons ajouté :
- Nous créons un tableau
$scope.markers
pour suivre tous nos marqueurs. - Nous ajoutons un écouteur d'événement à notre carte qui crée un nouveau marqueur chaque fois que l'utilisateur clique sur la carte.
- Nous créons une fonction
removeMarkers
qui supprime tous les marqueurs de la carte et efface notre tableau de marqueurs. - Nous ajoutons un bouton à notre HTML qui appelle la fonction
removeMarkers
lorsque le bouton est cliqué.
Conclusion
Félicitations ! Vous venez de construire votre première application de carte interactive avec AngularJS et Leaflet. Vous avez appris à configurer une carte de base, ajouter des marqueurs, et même implémenter des interactions utilisateur.
Souvenez-vous, c'est seulement le début. Le monde des cartes web est vaste et passionnant, avec des possibilités infinies de personnalisation et d'ajout de fonctionnalités. Continuez à explorer, continuez à coder, et surtout, amusez-vous !
Voici un tableau récapitulatif des principales méthodes que nous avons utilisées :
Méthode | Description |
---|---|
L.map() |
Crée une carte sur l'élément HTML spécifié |
setView() |
Définit la vue de la carte avec un centre et un niveau de zoom |
L.tileLayer() |
Ajoute une couche de tuiles à la carte |
L.marker() |
Ajoute un marqueur à la carte |
bindPopup() |
Lie une popup à un marqueur |
openPopup() |
Ouvre la popup pour un marqueur |
on() |
Ajoute un écouteur d'événement à la carte |
addTo() |
Ajoute un objet à la carte |
removeLayer() |
Supprime une couche de la carte |
Bonne carte, futurs cartographes !
Credits: Image by storyset