Basculer de Google Maps vers Leaflet et OpenStreetMap avec Geolocation sur Drupal 8

Une carte

Le 2 mai 2018 Google a annoncé un changement de politique majeure concernant l'utilisation de ses services en ligne, et dont notamment son célèbre service de cartographie Google Maps et toutes ses API associées, pour embarquer ou générer des informations géolocalisées. Ce changement de politique rend désormais payant un service auparavant disponible gratuitement dans certaines limites de quota, relativement généreuses, et ce à compter du 11 juin 2018. Je vous invite à lire ce billet pour avoir tous les détails sur ce changement de politique et ses implications : Don’t be evil… until…

Cette modification des règles d'usage de GoogleMaps nous rappelle cruellement qu'on peut retrouver, dans le modèle d'affaire de Google, une similitude très forte, pour citer l'article mentionné ci-dessus, avec le modèle d’affaire des dealers de crack… les premières doses sont gratuites et ça devient ruineux quand on est accro.

Même si la plupart des sites Internet que je peux réaliser, ou maintenir, ont souvent un usage modéré de Google Maps, et resteraient très certainement sous la limite des nouveaux quota mensuels, il n'en reste pas moins que ce changement de politique vous met dans une situation que vous ne pouvez plus maîtriser une fois vos coordonnées bancaires renseignées pour pouvoir continuer les services de Google.

Il est donc temps de cesser d'utiliser ces solutions, par habitude ou par facilité, et d'aller voir ce qui se fait très bien aussi ailleurs.

Regardons comment sur Drupal 8 nous pouvons basculer sur une solution open source basée sur Leaflet et OpenStreetMap. Nous disposons de plusieurs solutions avec Drupal pour implémenter un service de géolocalisation ou de cartographie.

D'une part nous pouvons utiliser les modules, Geofield, Geocoder et Leaflet. Mais ces modules sont très agnostiques et sont généralement utilisés déjà avec OpenStreetMap.

D'autre part nous disposons du module Geolocation qui est une véritable boite à outils et une solution extrêmement complète, presque out of the box, et activement maintenue. C'est d'ailleurs un des modules les plus utilisés pour générer des cartes avec Drupal 8. Et il dispose également de quelques atouts qui le rendent particulièrement flexible et polyvalent, comme par exemple la possibilité de surcharger depuis la page de création du contenu les différents paramétrages de la carte configurés de façon globale au niveau du champ lui-même. Bref, Geolocation peut être considéré comme une solution tout en un, comparé aux modules Geofield et Leaflet, celui-ci se chargeant de stocker des données géographiques (Geofield) et de les restituer (Leaflet).

Seul petit bémol avec Geolocation, Il s'agit d'un module lourdement orienté sur Google Maps, voire exclusivement orienté Google Maps...

..Tout du moins jusque la version 2.x du module en cours de développement (une version beta est disponible). En effet, avec la version 2 du module Geolocation, nous disposons désormais également du support d'OpenStreetMap et de Leaflet pour générer de belles cartes open source. Et ceci sans presque aucun effort.

Et grâce à cet ajout, qui s'est accompagné d'une profonde refonte du module, changer de système de cartographie pour quitter les rivages de Google et embarquer avec OpenStreetMap est un jeu d'enfant. Un grand Merci au mainteneur de ce module @christianadamski.

Migrer de Google Maps vers OSM avec Geolocation

Une carte GoogleMaps

Regardons plus en détail comment basculer nos cartes générées avec GoogleMaps pour désormais utiliser Leaflet et OpenStreetMap.

Nous prendrons comme support, pour illustrer les quelques manipulations à faire, une configuration classique, à savoir un champ Geolocation créé sur un type de contenu, ou un paragraph, permettant de situer un point, une adresse sur une carte. A noter, à l'heure où j'écris ces lignes, je vous invite à utiliser la version de développement, en attendant que la prochaine version 2.0-beta2 soit publiée avec toutes les corrections apportées depuis la version bêta 1.

Pour les utilisateurs de la version 8.1.x de Geolocation vous pouvez réaliser un upgrade vers la 2.x sans souci. il n'y a aucun changement en ce concerne le stockage ou le modèle des données. Nous pouvons lancer l'upgrade du module sereinement avec composer.

composer require drupal/geolocation:2.x-dev

Une fois le code source mis à jour, vous pouvez lancer une mise à jour de la base de données. Cette mise à jour incluse avec la version 2.x se limite juste à activer son sous module Geolocation Google Maps par défaut, car désormais toutes les fonctionnalités liées à Google Maps ont été intégrées dans ce nouveau sous module.

Et nous ne manquons d'activer le sous module Geolocation Leaflet pour effectuer notre transition en douceur.

La bascule vers OpenStreetMap peut se faire alors en quelques clics. Il nous suffit alors de sélectionner le widget Geolocation Leaflet - Geocoding and Map dans la configuration de l'affichage du formulaire, puis le formateur Geolocation Leaflet - Map pour la configuration de l'affichage.

widget leaflet

Configurons le widget et le formateur de notre champ Geolocation. Nous pouvons noter que, outre les éléments de configuration standard tels que les informations du marqueur, la position, le niveau de zoom, nous retrouvons la possibilité de surcharger la configuration du widget depuis le formulaire de création de contenu si nécessaire.

Formatter Leaflet

 

Et hop. Le tour est joué. Nous disposons désormais d"une nouvelle carte basée cette fois sur Leaflet et OpenStreetMap. Sans reprise de données nécessaire, puisque au final nous n'avons fait que changer la façon dont sont rendus les données géographiques stockées par le module.

Carte OSM

 

Grâce au module Geolocation, dans sa version 2.x, nous pouvons basculer vers une solution cartographique open source très simplement et presque sans effort. Certes, il n'y a pas (encore) toute la richesse fonctionnelle des cartes Google Maps au niveau de la configuration des widgets ou de l'affichage des cartes, mais l'essentiel est présent. Et je ne doute pas que le module va s'enrichir très rapidement.

Et vous, vous avez déjà effectué la transition vers OpenStreetMap ?

 

Ajouter un commentaire