Géolocalisation, pays, latitude, longitude – Découvrir leaflet.js pour placer des marqueurs sur une carte avec les coordonnés de chaque pays
C’est un sujet récurrent déjà maintes fois abordé dans ce blog. Un “must-have” dans ce que l’on nomme généralement la datavisualisation. Le principe en est simple : il s’agit de géolocaliser un ensemble de contenu sur une carte par exemple. En l’occurrence, notre besoin était d’avoir sur une carte du monde, la dispersion d’un ensemble d’articles consacrés à des initiatives menées en faveur de l’environnement.
Tout le code de cet article est disponible sur github :
https://github.com/bflaven/BlogArticlesExamples/tree/master/lat_long_countries_capital
Il nous fallait donc la latitude et la longitude moyenne pour chaque pays en vue d’afficher un marqueur sur le pays en question et non à coté ! Attention aux îles. Ce marqueur sera cliquable et permettra d’accéder à la page de résultat de tags combinant le tag pays et le tag environnement.
On a donc rapproché différentes sources de données glanées sur le web notamment la liste des codes pays ISO 3166 dont on va se servir comme d’un pivot pour gérer nos traductions. Pour l’instant, nous ne gérons que le nom anglais, le nom en français, toutefois rien n’empêche d’ajouter des colonnes pour gérer la traduction dans d’autres langues. Le tout a ensuite été intégré dans une BDD MySQL.
Pour information, une autre structure de cette table sera peut-être fournie avec des colonnes additionnelles pour gérer les langues suivantes notamment : swahili, arabe, persan, russe, anglais, chinois, français, cambodgien, portugais brésilien, vietnamien, haoussa, espagnol.
La traduction de Australie dans les langues citées ci-dessus
"sw-SW": "Australia", "ar-AR": "أستراليا", "fa-IR": "استرالیا", "ru-RU": "Австралия", "en-US": "Australia", "zh-ZH": "澳洲,澳大利亚", "fr-FR": "Australie", "km-KM": "អូស្ត្រាលី", "pt-BR": "Austrália", "vi-VI": "Úc", "ha-HA": "Ostraliya", "es-SP": "Australia" |
Quelques explications sur la table
Une ligne d’exemple tirée de la table, celle de l’Australie
(14, 'AU', 'Australia', 'Australie', -27.0000000, 133.0000000), |
- 1. Les codes pays ISO 3166 ex : AU pour Australie
- 2. Le nom en anglais du pays ex : Australia
- 3. La traduction en français ex : Australie
- 4. La latitude et la longitude d’un point moyen dans le pays ex : -27.0000000, 133.0000000 en Australie. Pour information, il ne s’agit pas de Canberra (Latitude : -35.3075 | Longitude : 149.124417), la capitale de l’Australie mais un trou perdu dans le bush…
La liste des pays est dans une table nommée location_fr_en
dans une BDD
Voir : countries_capitals_location_fr_en.sql sur gihub
Le résultat de la carte
En savoir plus
- Leaflet, an open-source JavaScript library
for mobile-friendly interactive maps
http://leafletjs.com/ - OpenStreetMap est une carte du monde, créée par des gens comme vous et libre d’utilisation sous licence libre.
http://www.openstreetmap.org/ - Average Latitude and Longitude for Countries
http://dev.maxmind.com/geoip/legacy/codes/country_latlon/ - ISO 3166 Country Codes
http://dev.maxmind.com/geoip/legacy/codes/iso3166/ - World City Locations Database, une source complète sur géolocalisation
https://github.com/bahar/WorldCityLocations - How to parse JSON file with PHP
http://www.bewebdeveloper.com/tutorial-about-how-to-parse-json-file-with-php