[OSM-talk-fr] [Étrennes] Firefox extension Operator: Hack OpenStreetMap

Vincent Pottier vpottier at gmail.com
Ven 1 Jan 17:40:52 UTC 2010


Bonjour et Bonne année aux OSMeurs,

Un petit hack en guise d'étrennes.

Vous voulez ouvrir les microformats [1] geo ou hCard directement dans OSM ?

Michael Kaply a écrit l'extension Operator qui traite les microformats
[2] et le web sémantique. Cette extension contiend des instructions pour
Google, pour les formats 'geo' et 'hCard'. Plutôt que de publier une
variante de cette extension (version, licence...), je vous propose un
truc pour rendre celle-ci 'OSM complient'.

Un fichier, google.js, sera dupliqué, openstreetmap.js, et modifié, un
fichier, SemanticActions.js, sera complété.
L'opération est faite sur un mac OS 10.4 avec l'application 
JarInspector [3] qui ouvre et explore les fichiers .jar, format des
extensions de Firefox.

Quelques connaisseurs des plateformes Linux et Windows compléteront.
Puis je publierai le hack sur le wiki.

Éditer les fichiers
===============
Accéder à l'extension
---------------------------
Le fichier de l'extension est situé à l'emplacement :
- linux :
~/.mozilla/firefox/*.default/extensions/{95C9A302-8557-4052-91B7-2BB6BA33C885}/chrome/operator.jar

- mac :
~/Bibliohèque/Application
support/Firefox/Profiles/*.default/extensions/{95C9A302-8557-4052-91B7-2BB6BA33C885}/chrome/operator.jar
Ouvrir l'archive avec l'application JarInspector.

Dupliquer google.js
-------------------------
Dans l'archive, trouver le fichier ./content/SemanticActions/google.js
Le copier sous le nom ./content/SemanticActions/openstreetmap.js

Modifier openstreetmap.js
---------------------------------
Ouvrir le fichier ./content/SemanticActions/openstreetmap.js avec
l'éditeur de votre choix

Voici les modifications à apporter au fichier.
ligne 3
- var google_maps = {
+ var osm_maps = {

ligne 4
-   description: "Find with Google Maps",
+   description: "Find with OpenStreetMap",

ligne 5
-   shortDescription: "Google Maps",
+   shortDescription: "OpenStreetMap",

ligne 6
-   icon: "http://www.google.com/favicon.ico",
+   icon: "http://www.openstreetmap.org/favicon.ico",

ligne 26
-           return "http://maps.google.com/maps?q=" +
Microformats.simpleEscape(semanticObject.label[propertyIndex]); 
+           return "http://nominatim.openstreetmap.org/search?q=" +
Microformats.simpleEscape(semanticObject.label[propertyIndex]); 

ligne 32
-         url = "http://maps.google.com/maps?q=";
+         url = "http://nominatim.openstreetmap.org/search?q=";

ligne 61
-         url = "http://maps.google.com/maps?ll=" +
semanticObject.latitude + "," + semanticObject.longitude + "&q=" +
semanticObject.latitude + "," + semanticObject.longitude;
+         url = "http://www.openstreetmap.org/?mlat=" +
semanticObject.latitude + "&mlon=" + semanticObject.longitude +
"&layers=B000FTF";

ligne 62, suppression
-         url += " (" + semanticObject.toString().replace("(",
"[").replace(")", "]") + ")";

ligne 69 (68)
- var google_search = {
+ var osm_search = {

 ligne 70 (69)
-   description: "Find with Google Search",
+   description: "Find with Nominatim",

ligne 71 (70)
-   shortDescription: "Google Search",
+   shortDescription: "Nominatim",

ligne 72 (71)
-   icon: "http://www.google.com/favicon.ico",
+   icon: "http://www.openstreetmap.org/favicon.ico",

ligne 79 (78)
-     var property = google_search.scope.semantic[semanticObjectType];
+     var property = osm_search.scope.semantic[semanticObjectType];

ligne 87 (86)
-       return  "http://www.google.com/search?q=" +
encodeURIComponent(searchstring);
+       return  "http://nominatim.openstreetmap.org/search?q=" +
encodeURIComponent(searchstring);

lignes 93-238 (92-237) suppression

ligne 240 (92)
- SemanticActions.add("google_maps", google_maps);
+ SemanticActions.add("osm_maps", osm_maps);

 ligne 241 (93)
- SemanticActions.add("google_search", google_search);
+ SemanticActions.add("osm_search", osm_search);

ligne 242 (94) suppression
-SemanticActions.add("google_calendar", google_calendar);

Sauvegarder

Compléter SemanticActions.js
---------------------------------
Ouvrir le fichier ./content/SemanticActions/SemanticActions.js avec
l'éditeur de votre choix

ligne 37, ajout
+         ojl.loadSubScript(baseurl + "openstreetmap.js");

Sauvegarder

Recréer l'archive .jar
===============
Sur Mac, la fermeture de celle-ci dans JarInspector effectue l'opération.

Relancez Firefox avec l'extension Operator modifiée active.
Allez sur la page http://wiki.openstreetmap.org/wiki/France
L'extension Operator devrait réagir et proposer d'ouvrir la carte dans
OpenStreetMap (clic droit sur 'Latitude : 47.14, Longitude : 3.21')

Attention
=======
À la mise à jour de l'extension, les modifications disparaîtront
certainement. Un peu de lobbying auprès de son auteur permettront
certainement d'obtenir l'intégration de ce hack. N'hésitez pas à lui en
parler

Je n'ai pas testé l'utilisation de nominatim. Ça devrait marcher...
théoriquement...

Bonne année et bonne carto à vous

[1] http://microformats.org/
[2] https://addons.mozilla.org/fr/firefox/addon/4106
[3] http://www.codeland.org/

-- 
Vincent alias FrViPofm




Plus d'informations sur la liste de diffusion Talk-fr