Ersatz für Google Maps

Leaflet

Über ein Jahrzehnt lang war Google Maps kostenfrei verwendbar – zumindest für die Betreiber kleiner und mittlerer Websites – aber nun will Google Geld sehen. Für einige höchste Zeit, sich über Alternativen Gedanken zu machen, bevor Google mehr vom Konto abbucht, als durch Werbeeinnahmen möglicherweise wieder herein kommt. Um genau zu sein, es geht um die Google Maps JavaScript API, also um die Programmierschnittstelle, mit der Betreiber von Websites per JavaScript Google Maps Karten in ihre eigenen Webseiten einbauen können. Google Maps als Webseite ist für den Benutzer natürlich nach wie vor kostenfrei.

Google will plötzlich Geld – wie kommt das?

Man kann Google nicht vorwerfen, sie hätten versprochen, Google Maps für alle Zeit kostenlos anzubieten, das hat Google natürlich nicht. Aber es ist schon so, dass Webprogrammierer über Jahre mit attraktiven Features wie den Satellitenbildern, Streetview, Geocoding-, Directions-, oder Elevation-Services angefüttert wurden. Die haben dann wer weiß wie viele zehntausend Programmierstunden in diesen Dienst investiert, ihn bekannt gemacht, aber sich selber so in die Abhängigkeit begeben. Natürlich auch mangels guter Alternativen.

Dann musste die Falle nur noch zuschnappen und das hat Google sehr geschickt eingefädelt. Zuerst wurde vor einigen Jahren ein Google Maps API Key eingeführt, den Webmaster bei Google beantragen sollten, um ihn dann an den Aufruf der Google Maps API in allen Webseiten anzuhängen. Das wurde zu Anfang recht lasch gehandhabt, es hat sehr lang auch ohne diesen Schlüssel funktioniert.

Die Zügel wurden erstmalig im Juni 2016 angezogen. Ab diesem Zeitpunkt war der Google Maps API Key verpflichtend, das heißt Karten wurden nicht mehr angezeigt, wenn im Aufruf kein gültiger API-Key übergeben wurde. Gleichzeitig wurde von Google ein tägliches Freikontingent von 25.000 API-Aufrufen eingeräumt. Ein Volumen mit dem es sich hat gut leben lassen.

Kritisch wurde es dann im Juli 2018. Nun war es nicht mehr ausreichend, einen API-Key zu besitzen, Google hat von jedem Nutzer die Hinterlegung eines Zahlungsplans verlangt. Das bedeutete nichts anders, als dass man Kreditkarten- oder Kontodaten hinterlegen musste, über die Google im Falle einer Kontingentüberschreitung Geld einziehen können würde. Gleichzeitig wurde die Preisgestaltung komplett geändert. Für dynamische Karten – darunter fallen Aufrufe per Google Maps JavaScript API – wurden nun 7$ für jeweils 1.000 API-Calls fällig, bei einem Freikontingent von 200$ im Monat. Dazu hat es dann diverse Einmal-Gutschriften (Free Trial und Platform transition coupon) gegeben, die wohl in den ersten Monaten verschleiern sollten, falls die Freikontingente gerissen wurden.

Machen wir mal eine Beispielrechnung auf:
Vor Juli 2018 gab es ein tägliches Freikontingent von 25.000 Aufrufen. Im Monat wären das bei 30 Tagen 750.000 freie Aufrufe. Nach dem neuen Modell kosten diese 750.000 ehemals kostenlosen Aufrufe plötzlich 750.000 / 1000 * 7$, also sagenhafte 5.250$. Davon sind dann natürlich noch 200$ Freikontingent in Abzug zu bringen. Das ergibt satte 5.050$ im Monat. Sicher ein extremes Beispiel, aber für jemanden, den es trifft ein Horrorszenario.

Betroffen sind aber halt auch viele kleine Webseitenbetreiber, die in der Vergangenheit auf Google Maps gesetzt hatten, wie zum Beispiel ich. Denn das Freikontingent von 200$ pro Monat steht jetzt nur noch für 952 Api-Calls pro Tag. Wohlgemerkt vorher waren es 25.000 Calls pro Tag. Kein Wunder, dass viele diese neue Preisgestaltung auf dem Konto deutlich spüren oder es noch spüren werden.

Was tun?

Volumen verringern um ins Freikontingent zurück zu kommen

Das geht natürlich nur über die Stilllegung von Seiten oder ganzen Sites, oder über den Verzicht auf eingebettete Karten. Mancher kann auch darüber nachdenken, von dynamichen zu statischen Karten zu wechseln, was den Preis für 1.000 Aufrufe von 7$ auf 2$ senken würde. Wenn jedoch JavaScript Programme existieren, da geht der letzte Weg nicht.

Auf der anderen Seite wollen wir alle doch mehr Besucher auf unseren Webseiten und nicht weniger, da wird es schwer mit dem Verringern des Volumens.

Google Maps ablösen

2005, als Google Maps online ging, hatte es dazu kaum nennenswerte Konkurrenz gegeben. Im Lauf der Jahre haben sich aber mit dem Erfolg von OpenStreetMap auch JavaScript APIs etablieren können, die eine Programmierung rund um OpenStreetMap ermöglichen. Zu nennen sind da zwei:

Ich habe nicht beide in all ihren Leistungsmerkmalen verglichen, aber verkürzt kann man vielleicht so sagen: Open Layers ist umfangreicher und leistungsfähiger, dafür auch etwas komplizierter und Leaflet ist einfach und leicht zu implementieren. Beiden gemeinsam ist, dass sie freie Software sind und nicht konzerngebinden wie Google Maps. Beide setzen auf Karten aus der OpenStreetMap Familie und solche, die sich auf die gleiche Weise einbinden lassen. Einen interaktiven Überblick über mögliche Karten bietet die Leaflet-Providers-Preview. Ich habe mich für Leaflet entschieden und bisher keine Funktion vermisst, bis auf einen Geo-Coding Service, aber den bringt Open Layers auch nicht mit.

Geo-Coding, also die Abfrage von Koordinaten anhand einer Adresse (Straße, Ort, Land) und Reverse Geo-Coding, also die Abfrage von Adressen anhand von Koordinaten, sind bei Google Maps Bestandteil der API. Nutzer von Leaflet oder Open Layers müssen sich anderweitig orientieren, etwa bei Nominatim aus dem OpenStreetMap Umfeld.

Fazit: Ja es ist möglich die Google Maps JavaScript API durch eine andere JavaScript Library zu ersetzen. Für Randbereiche wie Geo-Coding, Elevation-Service oder ähnliches muss man sich aber andere Lösungen suchen. Das größte Manko beim Verzicht auf Google Maps ist in meinen Augen der Verlust der Satellitenbilder. Das kann OpenStreetMap nicht bieten. Die sehr interessanten ESRI-Satelliten Daten sind leider nur für nicht kommerzielle Webseiten kostenfrei.

Der Umstieg von Google Maps JS API zu Leaflet

Natürlich hängt das an der Komplexität der Anwendung, aber an sich ist der Wechsel zu Leaflet recht einfach und an einigen Stellen sehr erfreulich, wie wir noch sehen werden. Hier eine kurze Marschliste, die ich nach der Umstellung von drei Sites empfehlen kann:

  1. Leaflet downloaden. Den Abruf übers Internet vom Leaflet-eigenen CDN würde ich aus Datenschutzgründen nicht empfehlen. Besser selber hosten!
  2. Leaflet hochladen auf den eigenen Webspace und zwar leaflet.js, leaflet.css und dazu das Verzeichnis images, das Marker und Layerumschalter enthält. Das Verzeichnis images muss genau dort hin kommen, wo leaflet.css liegt.
  3. Leaflet.css in den Head-Bereich der HTML-Seite einbinden. (Dafür gibt es keine Entsprechung bei Google Maps)
  4. Die Google Maps JavaScript API durch Leaflet.js ersetzen. (Natürlich die hochgeladene Version auf dem eigenen Webspace einbinden.
  5. Im JavaScript-Code die Karteninitialisierung umstellen. also Google Maps raus und Leaflet mit OpenStreetMap rein. Wenn das erledigt ist, wird die Webseite möglicherweise bereits die OpenStreetMap Karte anzeigen, auch der Rest des JavaScript-Programms noch Fehler bringt.
  6. Restliches JavaScript umstellen, also die Einbindung zusätzlicher Karten, Marker, Linien, usw.
  7. Andere Services ablösen, also alles was Google Maps konnte aber Leaflet nicht, also zum Beispiel Geo-Coding oder Elevation Service. Das kann äußerst aufwändig werden, weil sich sicherlich sowohl die Calls als auch die Responses deutlich von Google unterscheiden werden.
  8. Mit der Suchfunktion über den JavaScript-Code gehen und nach dem Wort „google“ suchen und danach nach der Map-Variable. „google“ sollte nicht mehr vorkommen und das Map-Objekt nur noch mit Leaflet-Methoden bearbeitet werden.
  9. Wenn die ganze Site googlefrei ist, dann nicht vergessen Google Maps aus der Datenschutzerklärung zu streichen. Ggf. aber OpenStreetMap dafür aufnehmen.

Leaflet ist wunderbar

So unerfreulich so eine erzwungene Umstellung ist, wenn man sich möglicherweise in Programmcode erneut einarbeiten muss, den man vor vielen Jahren geschrieben hatte, so kann das ganze aber auch erfreuliche Momente bieten. Nämlich wenn man merkt, wie einfach und kurz ein Programm durch den Einsatz von Leaflet plötzlich wird. Meine TrackViewer-API hat sich in der gepackten Version ohne Kommentare von 19kB auf 16kB verkleinert, also um 16% nur dadurch, dass Google Maps durch Leaflet ersetzt wurde. Aber auch manche Umständlichkeit von Google Maps entfällt mit Leaflet.

Ein Beispiel: Sowohl bei Google Maps als auch bei Leaflet gibt es eine Methode fitBounds, die das Kartenfenster auf bestimmte äußere Grenzen setzt. Mit der Google Maps JS API macht man das folgendermaßen:

map.fitBounds(new google.maps.LatLngBounds(
               new google.maps.LatLng(45.4555729, 9.169236),
               new google.maps.LatLng(45.5983128 ,8.9172776)));

Dabei werden die Koordinatenpaare zuerst in zwei google.maps.LatLng Objekte gewandelt, die dann zusammen zu einem google.maps.LatLngBounds Objekt gemacht werden, was wiederum der fitBounds Methode übergeben werden kann. In Leaflet geht das prinzipiell genauso:

map.fitBounds(L.latLngBounds(
               L.latLng(45.4555729, 9.169236),
               L.latLng(45.5983128 ,8.9172776)));

oder man macht sich das Leben einfach und übergibt die Koordinaten einfach in Arrayform:

map.fitBounds([[45.4555729, 9.169236], [45.4555729, 9.169236]]);

Ist das nicht viel einfacher? Und das ist noch nicht alles. Bei Google Maps muss der fitBounds Methode zuerst die südwestliche und dann die nordöstliche Ecke des gewünschten Kartenausschnitts übergeben werden. Bei Leaflet müssen es nur zwei gegenüberliegende Punkte eines Rechtecks sein, egal welche und in welcher Reihenfolge.

Ich denke, dieses einfache Beispiel zeigt schon die Schönheit und die Einfachheit von Leaflet, die einem den Umstieg wirklich einfach macht.

Ein zweites Beispiel: In Google Maps ist es immer ein riesen Akt, zusätzlich zu den vorhandenen Karten weitere OpenStreetMap Karten einzubinden. Vor allem die Einblendung eines passenden Copyright-Hinweises bei wechselnden Karten ist nicht ganz trivial. Hier muss ein Event-Listener aufgesetzt werden und eine Funktion, die dann auf den jeweils passenden Copyright-Hinweis umschaltet. Leaflet hat das alles bereits on Board, man gibt bei der Definition eines Kartenlayers neben der URL des Tileservers, einfach den gewünschten Copyright-String als attribution Option an. Das Umschalten und Einblenden macht der Layer-Switcher automatisch.

Ein Leben ohne Google Maps ist also möglich und der Umstieg ist machbar. Leaflet ist angenehm zu programmieren und wer Leaflet auf dem eigenen Server hostet (was bei Google Maps nicht möglich ist) der hat auch – was den Datenschutz angeht – eine Sorge weniger.

Ganz ohne Google?

Googlefreie Website?

Bei mir leider nicht ganz, ich habe Google Maps zwar auf vielen Webseiten inzwischen beseitigt, aber mein GPS Online Routen Planer nutzt Google Maps weiterhin. Eine Umstellung wäre hier zu aufwändig, so dass ich eher an eine Stilllegung denken würde. Aber nachdem das jetzt die einzige Seite ist, die Google Maps noch nutzt, sollte es mit dem Freikontingent auch keine Probleme mehr geben.

Allerdings setze ich auf einigen Sites – auch hier im Blog – Google Adsense ein. Die Einnahmen sind zwar zurückgegangen, seit ich im Rahmen der Datenschutzgrundverordnung im Jahr 2018 die personenbezogene Werbung abgeschaltet habe, aber ein paar Euro sind es noch. Damit bleibt einstweilen Google AdSense aktiv und mit der Google-Freiheit wird es erstmal noch nichts.

Ein Leben ohne Google?

Für mich ein durchaus erstrebenswertes Ziel. Nicht, weil Google Geld für Google Maps möchte sondern wegen dem andauernden Tracking und der Datensammlerei, der man als Googlenutzer ständig ausgesetzt ist. Die Googlesuche hab ich zum Beispiel schon lange aus meinem Leben verbannt und nutze ebenso gut Startpage als Suchmaschine. Bei anderen Dingen wird es schwieriger, beim Smartphone zum Beispiel. Da kann man sich aussuchen, ob man Apple, Microsoft oder Google seine Daten geben will.

Um dieses Thema wird sich auch meine nächste Artikelserie drehen. Was kann ich als Android-Nutzer tun, um der Überwachung durch Google und anderer Datenkraken zu entgehen. Ich werde einige sinnvolle Datenschutzeinstellungen am Android-Smartphone besprechen und den Selbstbau eines VPN-Servers auf Raspberry Pi Basis, um das Smartphone abzusichern in dem Trackingdienste ausgehebelt werden.

4 Kommentare

  1. Tom

    Ich bin ganz deiner er Meinung was die Datensammlungen von Google und Co angeht.
    Da ich noch mit Telefonzelle großgeworden bin und jetzt live, bei meinen Kindern
    die Abhängigkeit von Smartphone sehe, weder ich mir nie so ein Ding anschaffen.
    Da werden Daten gesammelt wie es nur geht. Und da ich ein gerootets Tablett mit Ad Blocker habe ( Ohne jede Werbung!!) bin ich auf Raspberry Pi gekommen, pi hole anzuwenden, um damit alle Geräte im Haus werbefrei zu bekommen. Da bin ich auf diese Projekte von dir gestoßen. Vor allen die Sache mit den Eichhörnchen wird bestimmt noch mal nachgebaut!!. Aber das beste was mein Sohn noch dazu meinte das ich die gesamte Werbung blockieren will.“ Wie keine Werbung mehr ich brauch die ich kann nicht ohne die Leben was soll ich mir dann kaufen“ Da mußte ich aber erst einmal schlucken. Aber jedem das seine, das muss jeder für sich selber entscheiden. Ich Danke dir und weiter so. Tom

    Antworten
    1. Helmut (Beitrag Autor)

      Werbung seh ich nicht unbedingt als Problem, aber da bin ich parteiisch, denn auch dieser Blog lebt von Werbung und könne sich anders nicht finanzieren. Das Problem ist eher das Tracking, das oft mit Werbung einher geht, also das Sammeln und Verdichten von Userdaten. Dagegen kann man als Anwender viel machen, beginnend mit Einstellungen am Smartphone bis zum Einsatz von Pi-Hole.

      Antworten
  2. Christin

    Der Abruf über dass Internet vom Leaflet-eigenen CDN wird hier aus Datenschutzgründen nicht empfohlen, aber die Kacheln werden trotzdem noch vom Drittanbieter geladen, gibt es dazu eine Alternative?

    Antworten
    1. Helmut (Beitrag Autor)

      Wenn man die Kartenkacheln nicht von einem Drittanbieter (z.B. OpenStreetMap) beziehen möchte, dann bleibt folglich nur die Alternative, weltweite Kartenkacheln selbst auf dem eigenen Server zu hosten. Das kann man machen, aber der Aufwand ist natürlich beträchtlich. Alternativ stellt man sich die Frage, welchem Kartenanbieter man im Sinne Datenschutz vertrauen möchte. Dazu hab ich hier mal einige Anbieter zusammengetragen: https://www.gpswandern.de/gpxviewer/karten.shtml

      Antworten

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert