OSM statt Google Maps

Hoi,

gibt es vielleicht ein Plugin (va FF), das auf Webseiten die google-maps eingebunden haben stattdessen eine osm-karte mit den gleichen Daten anzeigt? Kenn jetzt die google-api nicht, aber stell mir das jetzt erstmal nicht so schwierig vor, da bestimmt einfach die Koordinaten rausgefiltert werden könnten.

Ich fänds schön so google nochmal ein Stück weiter zu entgehen, falls es das noch nicht gibt kann ich ja selbst mal schauen falls es da auch sonst Interesse gibt :slight_smile:

Es gibt von der Geofabrik das Tool MapCompare http://tools.geofabrik.de/mc/.
Das arbeitet allerdings nicht direkt auf Karten von Webseiten, man muss dorthin navigieren.

mit http://mc.bbbike.org kannst Du auch noch diverse OSM stiele vergleichen.

oder http://sautter.com/map/
da werden 2 Maps überlappt - oben in der Mitte gibt es einen Schieberegler um einzustellen, welche Map wie stark hervorgehoben werden soll (Map verschieben haut momentan aber nicht so richtig hin).

Gibt es da eigentlich eine Variante, wo man auch einen benutzerdefinierten WMS-Dienst angeben kann?

Hakuch sucht wohl eher etwas, um die Google-Karte eben nicht zu sehen, auch wenn sie irgendwo verlinkt oder eingebunden wird :wink:

genau :slight_smile:

ALso der Gedanke ist der folgende. Ich halte nach Möglichkeit Datensammelnde DIenste wie Google etc. von mir fern. Daher hab ich google auf fremden Seiten auch standardmäßig geblockt.
Wenn nun eine Website leider eine google-map einbindet, warum einfach nicht die GET Daten die an google gehen sollen nehmen und damit OSM ansteuern und dann eine osm-karte auf meinem rechner anzeigen lassen?

Wenn ich auch die Motivation verstehen kann, gebe ich zu bedenken, dass ein solches Plugin schlussendlich reine Symptombekämpfung wäre (neben etlichen anderen Problemen). Da scheint es doch sinnvoller den Effort in die Überzeugung des Websitebetreibers zu stecken, ev. sogar ihm dabei zu helfen umzustellen.

Dazu bräuchte man einen Web-Proxy, der zum einen die Google-Adresse umleitet und zum anderen auch den Inhalt des GET umformuliert.
Übrigens: Wenn alle Anfragen weltweit, die an Google Maps gerichtet werden, auf OSM-Server umgeleitet würden, wären die innerhalb von Minuten, wenn nicht sogar Sekunden down. Ein bisschen kann OSM schon froh sein, dass es noch weitere Dienste gibt, die Karten auf Webseiten anzeigen können.

Du müßtest Dein Blocking-Programm so umschreiben, daß es Kartenzugriffe an der URL erkennt und eben nicht blockiert sondern umleitet. Vermutlich hast Du aber keinen Sourcecode dafür.

Alternativ könntest Du in Deinem Browser ein PAC-File verwenden, das solche Karten-URLs erkennt und diese auf ein lokales Proxy umleitet. Soweit ich mich erinnere gibt es ein paar programmierbare Proxies, die dann vielleicht die Google-URL auf eine OSM Url umschreiben könnten. Hab aber schon jahrelang nichts damit gemacht.

bye, Nop

Mit Privoxy sollte das eigentlich gehen, d.h. eine Google-Tile-URL abfangen, umschreiben und dem Browser sagen, die Adresse wäre stattdessen die entsprechende OSM-Tile-URL. Der Browser ruft die dann auf.

Mit GreaseMonkey kann man sicherlich auch etwas bauen, was im nachhinein das DOM eine Seite mit Google Maps dahingehend ändert, dass der Google Baselayer gegen einen OSM Layer in der Google Maps API ausgetauscht wird. Die Bedenken von oben teile ich allerdings durchaus, zumal das alles dadurch nicht stabiler wird :wink:

Mh, also wenn ich eine Seite aufrufe wird erstmal der Quelltext geladen, wenn darin z.B. ein iframe vorhanden ist, das Daten von google nachladen soll wird dann noch google aufgerufen. Das kann man ja durch eine Abfrage blockieren, was anderes macht NoScript ja auch nicht. Und dann kann man aus dem Link der zu google führen sollte die Koordinaten oder Adresse rausfiltern und dann einen Link zu osm mit den Daten ausgeben.
Ganz grob gesprochen, aber dazu brauch ich doch kein Proxy oder andere addons Ist quasi ein spezialisiertes Noscript das halt nicht nur blockiert sondern auch gleich dafür was anderes darstellt.

Und das GEGEN-Argument das dann ja mehr Leute OSM nutzen würden find ich jetzt doch etwas seltsam?! Soll es nur für die Elite die sich auskennt bleiben? Hab ich manchmal den Eindruck wenn ich dran denke wie umständlich bedienbar beispielsweise die Adresssuche ist.

Das stellst Du Dir zu einfach vor. NoScript blockiert einfach alle Skripte von einer bestimmten Seite. Kartenkacheln werden aber von ziemlich kompliziertem JavaScript Code einzeln nachgeladen, das Script muß also funktionieren. Dieser Code kann völlig beliebig aussehen, daher kannst Du da gar nichts automatisch erkennen und umbiegen.

Du mußt die vielen, einzelnen Aufrufe, mit denen die Kacheln geholt werden, mit Hilfe eines Proxies abfangen, wenn sie der Browser rausschickt.

bye, Nop

mh? ich glaub ich denke ein paar schritte früher, vorm kacheln und JS abfangen etc. :slight_smile: also wenn ich eine google maps einbinde platzier ich z.B. so einen code auf meine page (hab ich jetz schnell von http://maps-einbinden.com/))

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script><div style="overflow:hidden;height:500px;width:600px;"><div id="gmap_canvas" style="height:500px;width:600px;"></div><style>#gmap_canvas img{max-width:none!important;background:none!important}</style><a class="google-map-code" href="http://wordpress-themes.org" id="get-map-data">wordpress-themes.org</a></div><script type="text/javascript"> function init_map(){var myOptions = {zoom:14,center:new google.maps.LatLng(50.1147801,8.678750600000058),mapTypeId: google.maps.MapTypeId.ROADMAP};map = new google.maps.Map(document.getElementById("gmap_canvas"), myOptions);marker = new google.maps.Marker({map: map,position: new google.maps.LatLng(50.1147801, 8.678750600000058)});infowindow = new google.maps.InfoWindow({content:"<span style='height:auto !important; display:block; white-space:nowrap; overflow:hidden !important;'><strong style='font-weight:400;'>Arztpraxis Dr. Hold</strong><br>Schillerstra&szlig;e 12<br> Frankfurt am Main</span>" });google.maps.event.addListener(marker, "click", function(){infowindow.open(map,marker);});infowindow.open(map,marker);}google.maps.event.addDomListener(window, 'load', init_map);</script>

(doch kein iframe wie ich sehe)

das kann ich, bevor es vom browser interpretiert wird im quelltext finden (ist natrülich ne fummelarbeit), löschen und dann stattdessen (pseudocodemäßig)

<span>hier ist jetzt ne osm map mit $foundData-getX(); $data-gety();</span>

ausgeben

Also ich geb zu, ich hab noch keine komplexeren addons für FF gemacht, aber es wird doch möglich sein den geladenen quelltext vorm interpretieren abzufangen und zu verändern?!

Greasemonkey

Damit schreibst du dir den DOM um. Das script wird aber erst aktiv wenn der DOM
fertig geladen ist, documentReady wird es wohl sein.
Es könnte nun sein das da bereits requests an google rausgegangen sind, sogar
recht wahrscheinlich. Dafür müsstest du diese Anfragen mit was anderem blocken,
z.B. in der hosts radikal oder was es an Browserplugins so gibt.

So ein bereits genannter umschreibender proxy erledigt das in einem Aufwasch.
Ist aber evtl. etwas verstreuteres arbeiten (extra Programm), und kaum weiter
vermittelbar an andere Nutzer.

Mit Greasemonkey (GM) umgehen lernen ist sowieso praktisch. IMHO bequemer
als ein proxy da man in GM einen DOM hat, Javascript und die ganze Browser-Api.
Es kann auch sein das man so einen Proxy findet, der im Speicher einen
DOM aufbaut und man da bequem manipulieren kann. Ich hatte früher
einen der nur mit RegEx auf html-ebene umgehen konnte und das recht
umständlich - keine Scriptsprache.

Wenn es dann mit GM gut klappt kann man da sicher ein eigenes Plugin draus
machen, wenn es denn sein muß.

Wenn es 1,2,3 Seiten sind die du dir so umstellen willst: ok, kann mal Spaß
machen. Als großes Projekt: such dir besser einen Job:-)

Irgendwie hat mich das Thema nicht losgelassen also hab ich es mal in die Tat umgesetzt.

Es gibt ein Firefox Plugin “Redirector”, das angibt URLs umbiegen zu können. Das funktioniert leider nicht für Kartentiles, ich habe den Eindruck das Addon hängt sich nur in die Seitenaufrufe in der Adreßzeile des Browser rein aber kann keine Requests von Javascript sehen.

Also habe ich mal spaßeshalber einen privoxy installiert, der Anfragen an die Google API umschreibt und auf die Reit- und Wanderkarte weiterschickt. Und siehe da, funktioniert wunderbar, fremde Webseiten mit meiner eigenen Karte zu nutzen. Mehr dazu hier.

bye, Nop

Mit Privoxy ist sowas kein Problem. Per RegEx einfach nach dem Google Code suchen lassen und durch OSM Code ersetzen.

Blöd ist es allgemein bei diesen Suchen-Ersetzen Lösungen nur, wenn man Seiten besucht, die nicht nur eine Karte zeigen sondern auch Funktionalität - wie eingeblendete Punkte etc. - auf der Karte zeigen.