Google Maps, JavaScript, API – Notions de base de la Google Maps JavaScript API et une approche sur le datajournalisme
Il existe de très nombreux usages possibles de l’API Google Maps afin de faire des cartes personnalisés notamment. Le plus étourdissant dans cette personnalisation est, à notre avis de lier, la quantité des références à la personnalisation des marqueurs en terme d’affichage. Idéalement, en créant dynamiquement un fichier json
contenant toutes les informations nécessaires à l’affichage des marqueurs personnalisés, vous pouvez créer un aperçu d’informations géolocalisées tout à fait intéressant, ce qui vous fera toucher du doigt, les expérimentations de datajournalisme
à l’instar de ces exemples :
- WikiLeaks Iraq war logs – every death mapped
- Texas Tribune – Census 2010 interactive map – Texas population by race, hispanic origin
Une conférence s’est d’ailleurs à Paris, très récemment, Voir News2012 | #HacktheNewsroom où il a été sans beaucoup question de datajournalisme.
Dans une catégorie, plus ludique que journalistique, c’est exactement ce principe que nous avons appliqué lors de la création de cette carte du style pour le site de Treets Looks, qui permet de visualiser tous les vidéos de street styles vidéo sur une carte du monde.
Tout ces interaction sont rendus possible grâce l’API JavaScript de Google Map. Cette API Javascript est piloté par les événements dans le navigateur, ce qui signifie que l’API Javascript répond à des interactions en générant des événements.
C’est là aussi les principes en action que nous avons poussé très loin avec l’API 3WDOC, elle aussi en javascript mais revenons à notre article.
Le jeu des capitales
On va placer ces 11 capitales européennes sur une carte google à l’aide des coordonnées longitude et latitude. Cela donne à la création d’un fichier json
de ce type.
- Paris – Latitude : 48.8578058 – Longitude : 2.29463
- Berlin – Latitude : 52.519171 – Longitude : 13.4060912
- Madrid – Latitude : 40.4166909 – Longitude : -3.7003454
- Athènes – Latitude : 37.9753357 – Longitude : 23.7361497
- Rome – Latitude : 41.8905198 – Longitude : 12.4942486
- Londres – Latitude : 51.5081289 – Longitude : -0.128005
- Lisbonne – Latitude : 38.706932 – Longitude : -9.1356321
- Varsovie – Latitude : 52.2296756 – Longitude : 21.0122287
- Prague – Latitude : 50.0878114 – Longitude : 14.4204598
- Budapest – Latitude : 47.4984056 – Longitude : 19.0407578
- Copenhague – Latitude : 55.6760968 – Longitude : 12.5683371
Le fichier json de source le_jeu_des_capitales.json
{"markers": [ {"lat":48.8578058, "lng":2.29463, "html":"Paris - Latitude : 48.8578058 - Longitude : 2.29463"}, {"lat":52.519171, "lng":13.4060912, "html":"Berlin - Latitude : 52.519171 - Longitude : 13.4060912"}, {"lat":40.4166909, "lng":-3.7003454, "html":"Madrid - Latitude : 40.4166909 - Longitude : -3.7003454"}, {"lat":37.9753357, "lng":23.7361497, "html":"Athènes - Latitude : 37.9753357 - Longitude : 23.7361497"}, {"lat":37.9753357, "lng":23.7361497, "html":"Athènes - Latitude : 37.9753357 - Longitude : 23.7361497"}, {"lat":41.8905198, "lng":12.4942486, "html":"Rome - Latitude : 41.8905198 - Longitude : 12.4942486"}, {"lat":51.5081289, "lng":-0.128005, "html":"Londres - Latitude : 51.5081289 - Longitude : -0.128005"}, {"lat":38.706932, "lng":-9.1356321, "html":"Lisbonne - Latitude : 38.706932 - Longitude : -9.1356321"}, {"lat":52.2296756, "lng":21.0122287, "html":"Varsovie - Latitude : 52.2296756 - Longitude : 21.0122287"}, {"lat":50.0878114, "lng":14.4204598, "html":"Prague - Latitude : 50.0878114 - Longitude : 14.4204598"}, {"lat":47.4984056, "lng":19.0407578, "html":"Budapest - Latitude : 47.4984056 - Longitude : 19.0407578"}, {"lat":55.6760968, "lng":12.5683371, "html":"Copenhague - Latitude : 55.6760968 - Longitude : 12.5683371"} ] } |
Le fichier HTML qui va nous permettre de charger l’ensemble le_jeu_des_capitales.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>le_jeu_des_capitales</title> <script src="http://maps.google.com/maps?file=api" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ var map; function createMarker(point,html) { var marker = new GMarker(point); GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); }); return marker; } setup_json = function(json, status) { var data = eval('(' + json + ')'); for (var i=0; i<data.markers.length; i++) { var point = new GLatLng(data.markers[i].lat, data.markers[i].lng); var marker = createMarker(point, data.markers[i].html); map.addOverlay(marker); } } function load() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map")); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.setCenter(new GLatLng(46.85, 1.75), 4); GDownloadUrl("le_jeu_des_capitales.json", setup_json); } else { alert("Désolé, l'API Google Maps n'est pas compatible avec votre navigateur."); } } //]]> </script> </head> <body onload="load()" onunload="GUnload()"> <div id="map" style="width: 650px; height: 650px"></div> </body> </html> |
Source : http://www.numabilis.com/
Le rendu du fichier HTML le_jeu_des_capitales.html
En savoir plus
- Events – Google Maps JavaScript API v3
http://code.google.com/intl/fr/apis/maps/documentation/javascript/events.html - Google Maps JavaScript API v3 Example: Event Closure
http://code.google.com/intl/fr/apis/maps/documentation/javascript/examples/event-closure.html - Google Maps JavaScript API v3 Example: Complex Icons
https://google-developers.appspot.com/maps/documentation/javascript/examples/icon-complex?hl=fr - Random Markers
http://gmaps-samples-v3.googlecode.com/svn/trunk/sidebar/random-markers.html - Google Maps JavaScript API v3 Example: Info Window Custom
http://gmaps-samples-v3.googlecode.com/svn/trunk/infowindow_custom/infowindow-custom.html - Google Maps API : affichage des données d’un fichier JSON
http://www.numabilis.com/index.php?post/2007-07-07-google_maps_api_affichage_des_donnees_dun_fichier_json - google-maps-utility-library-v3
http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/examples/speed_test_example.html - google-maps-utility-library-v3
http://www.mosne.it/playground/mosne_map/ - MarkerClusterer: A Solution to the Too Many Markers Problem
http://googlegeodevelopers.blogspot.fr/2009/04/markerclusterer-solution-to-too-many.html - Récupérer les coordonnées d’une adresse avec google map
http://www.weboblog.fr/recuperer-les-coordonnees-dune-adresse - The Data Journalism Handbook – Some Favorite Examples
http://datajournalismhandbook.org/1.0/en/introduction_3.html - Five great examples of data journalism using Google Fusion Tables
http://blogs.journalism.co.uk/2011/05/20/five-great-examples-of-data-journalism-using-google-fusion-tables/