FR:Bookmarklet osm-google maps
Jump to navigation
Jump to search
Un bookmarklet permettant de passer d'une carte Google Maps à une carte Openstreetmap, et réciproquement.
Depuis une page internet, l'accès au marque-page ouvre un nouvel onglet sur l'autre site et le positionne aux mêmes coordonnées géographiques et zoom.
Source
Bookmarklet
Copier le texte suivant dans l'adresse du nouveau marque-page :
javascript:(function(){params=location.href.match(/openstreetmap\.org.+#map=(\d{1,2})\/(-?\d{1,3}\.\d+)\/(-?\d{1,3}\.\d+)/);if(params!=null){window.open("https://www.google.com/maps/@"+params[2]+","+params[3]+","+params[1]+"z");}else{params=location.href.match(/www\.google\.[a-z]{2,4}\/maps\/.*@(-?\d{1,3}\.\d+),(-?\d{1,3}\.\d+),(\d+\.?\d{0,2})(a|m|z)/);if(params!=null){switch(params[4]){case"z":z=params[3];break;case"m":z=20-Math.log(params[3]/86.875)/Math.log(2);break;case"a":z=20-Math.log(params[3]/186.0278)/Math.log(2);break;}window.open("http://www.openstreetmap.org/#map="+Math.round(z)+"/"+params[1]+"/"+params[2]);}else{alert("openstreetmap%20%3C-%3E%20google%20maps\nimpossible");}}})()
Version lisible
(pour faciliter l'édition)
javascript:
(function() {
params = location.href.match(/openstreetmap\.org.+#map=(\d{1,2})\/(-?\d{1,3}\.\d+)\/(-?\d{1,3}\.\d+)/) ;
if (params != null) {
window.open("https://www.google.com/maps/@" + params[2] + "," + params[3] + "," + params[1] + "z") ;
}
else {
params = location.href.match(/www\.google\.[a-z]{2,4}\/maps\/.*@(-?\d{1,3}\.\d+),(-?\d{1,3}\.\d+),(\d+\.?\d{0,2})(a|m|z)/) ;
if(params!=null) {
switch(params[4]) {
case "z": z = params[3] ; break ;
case "m": z = 20 - Math.log(params[3] / 86.875) / Math.log(2) ; break ;
case "a": z = 20 - Math.log(params[3] / 186.0278) / Math.log(2) ; break ;
}
window.open("http://www.openstreetmap.org/#map=" + Math.round(z) + "/" + params[1] + "/" + params[2]) ;
}
else {
alert("openstreetmap <-> google maps\nimpossible") ;
}
}
}
)()
Problèmes connus
Certaines adresses google sont sous la forme @_LAT_,_LON_,_RAYON_m, avec non pas le zoom en paramètre, mais le rayon. La formule de conversion radius→zoom est reconstituée empiriquement. De manière générale, toute amélioration ou aide est la bienvenue !
Crédits
Auteur : the_knife
Licence : copyleft