Google propose aux développeurs une API
très pratique pour son Google Maps .
J’en ai fait une application pratique et professionnelle pour les éditions O’Reilly .
L’idée était de permettre aux visiteurs et éventuels lecteurs de trouver rapidement et facilement les libraires ayant un livre donné autour de chez eux.
Par exemple, les Nancéens pourront facilement trouver VoIP à 200%
chez leurs libraires locaux!
Ce système, utilisant notre base interne, propose une probabilité de la présence d’un livre chez un libraire.
Le principal problème de l’API Google Maps et qu’il ne permet pas de placer une position sur une carte directement à partir d’une adresse . Il faut donc déterminer par nos propres moyens les latitudes/longitudes des endroits que l’ont veut placer. Bien qu’il existe un outil pour faire cela simplement quand il s’agit d’adresses américaines, c’est une autre paire de manches pour nous européens.
Dans un premier temps, il nous a fallu déterminer les positions de chacun des libraires avec qui nous travaillons, puis
j’ai du convertir des positions des communes de la Poste qui étaient dans le système de projection Lambert II vers le système de Google (gws84).
J’ai fait cette conversion relativement facilement grâce au logiciel open source Proj4 . Vous comprendrez le “relativement” en voyant la commande qui permet cela:
cs2cs -f '%.3f' +proj=lcc +lat_0=46.8 +lat_1=45.898918 +lat_2=47.696014 +lon_0=2.3372291 \
+k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +ellps=clrk80 \
+towgs84=-168,-60,320,0,0,0,0 +to +proj=latlong +datum=WGS84 +ellps=WGS84 +no_defs -s
Cette commande prennant les x,y des coordonnées Lambert II dans le pipe unix et retournant les coordonnées pour google.
Un second problème et la compatibilité des navigateurs. Avec firefox, aucun problème, on peut coder comme on le sent. Pour ceux voulant permettre une compatibilité avec IE, il faudra y penser dès le départ et adapter le code en conséquence.
Pour le reste, l’API Google Maps reste simplissime d’utilisation et configurable au plus haut point: icones des points et des ombres personnalisées,
choix des contrôleurs dans l’interface ou encore récupération des événements de l’utilisateur.