Optimierungsleitfaden

In diesem Leitfaden werden verschiedene Strategien zur Optimierung der Nutzung der Google Maps APIs erläutert, die sich auf die Bereiche Sicherheit, Leistung und Verbrauch beziehen.

Sicherheit

Best Practices für die Sicherheit

API-Schlüssel sind projektbezogene Anmeldedaten, die die gleichen Sicherheitsvorkehrungen erfordern wie Nutzer-IDs und Passwörter. Wie du deine Schlüssel vor unbeabsichtigter Verwendung schützen kannst, die zu einer unzulässigen Kontingentnutzung und unerwarteten Kosten deines Kontos führen kann, erfährst du unter Best Practices für API-Schlüssel.

API-Schlüssel verwenden, um auf Google Maps APIs zuzugreifen

API-Schlüssel sind die bevorzugte Authentifizierungsmethode für den Zugriff auf Google Maps APIs. Die Client-IDs werden zwar weiterhin unterstützt, API-Schlüssel ermöglichen jedoch genauere Sicherheitskontrollen und können so optimiert werden, dass sie bei bestimmten Webadressen, IP-Adressen und mobilen SDKs (Android und iOS) funktionieren. Informationen zum Erstellen und Sichern eines API-Schlüssels findest du auf der Seite „API-Schlüssel verwenden“ für jede API bzw. jedes SDK. Für die Google Maps JavaScript API ist es beispielsweise diese Seite.

Leistung

Exponentiellen Backoff zur Fehlerbehandlung verwenden

Wenn bei deinen Apps Fehler auftreten, weil zu oft versucht wird, eine API innerhalb kurzer Zeit aufzurufen, (z. B. Fehler in Bezug auf Abfragen pro Sekunde), solltest du exponentielles Backoff verwenden, damit die Anfragen verarbeitet werden können.

Passe insbesondere die Geschwindigkeit deiner Abfragen an. Füge in deinem Code eine Wartezeit von S Sekunden zwischen den Abfragen hinzu. Wenn die Abfrage weiterhin zu einem „Abfragen pro Sekunde“-Fehler führt, verdopple die Wartezeit und sende dann eine weitere Abfrage. Passe die Wartezeit so weiter an, bis die Abfrage ohne Fehler zurückgegeben wird.

Anfragen mit Nutzerinteraktion nur bei Bedarf senden

Anfragen an APIs, die eine Nutzerinteraktion beinhalten, sollten nur bei Bedarf gesendet werden. Das bedeutet, dass gewartet wird, bis der Endnutzer eine Aktion (z. B. on-click) ausführt, um die API-Anfrage zu initiieren. Dann wird anhand der Ergebnisse eine Karte geladen, es wird ein Ziel festgelegt oder es werden die entsprechenden Informationen angezeigt. Mit einem On-Demand-Ansatz werden unnötige Anfragen an die APIs vermieden, wodurch der API-Verbrauch reduziert wird.

Verhindern, dass beim Verschieben einer Karte Overlayinhalte angezeigt werden

Verwende Draw() nicht, um benutzerdefinierten Overlayinhalt auf einer Karte darzustellen, wenn der Nutzer die Karte verschieben könnte. Weil die Karte jedes Mal neu gezeichnet wird, wenn ein Nutzer die Karte verschiebt, kann das gleichzeitige Hinzufügen von Overlayinhalten auf der Karte zu Verzögerungen oder visuellem Stottern führen. Overlayinhalte sollten nur dann einer Karte hinzugefügt oder daraus entfernt werden, wenn der Nutzer das Schwenken oder Zoomen der Karte beendet hat.

Komplexe Vorgänge in Draw-Methoden vermeiden

Als allgemeine Regel empfiehlt es sich, leistungsintensive Vorgänge, die nicht mit dem Zeichnen verbunden sind, in einer Draw()-Methode zu vermeiden. Vermeide beispielsweise Folgendes in deinem Draw()-Methodencode:

  • Abfragen, die eine große Menge an Inhalten zurückgeben
  • Zahlreiche Änderungen an den angezeigten Daten
  • Bearbeiten vieler DOM-Elemente (Document Object Model)

Diese Vorgänge können die Leistung verlangsamen und das Rendern der Karte verlangsamen oder ein Rendering auslösen.

Rasterbilder als Markierungen verwenden

Verwende Rasterbilder wie Bilder im PNG- oder JPG-Format, wenn du Markierungen hinzufügst, um einen Standort auf einer Karte zu identifizieren. Vermeide SVG-Bilder (Scalable Vector Graphics), da das Rendern solcher Bilder zu einer Verzögerung führen kann, wenn die Karte neu gezeichnet wird.

Markierungen optimieren

Durch die Optimierung wird die Leistung verbessert, weil viele Markierungen als einzelnes statisches Element gerendert werden. Das ist in Fällen nützlich, in denen eine große Anzahl von Markierungen erforderlich ist. Standardmäßig entscheidet die Maps JavaScript API, ob eine Markierung optimiert wird. Wenn eine große Anzahl von Markierungen vorhanden ist, versucht die Maps JavaScript API, Markierungen mit Optimierung zu rendern. Nicht alle Markierungen können optimiert werden. In einigen Fällen muss die Maps JavaScript API die Markierungen ohne Optimierung rendern. Deaktiviere das optimierte Rendering für animierte GIFs oder PNGs oder wenn jede Markierung als separates DOM-Element gerendert werden muss.

Cluster zum Verwalten der Markierungsanzeige erstellen

Erstelle mithilfe der Markierungs-Clustering-Dienstbibliothek einen Markierungscluster, um die Anzeige von Markierungen zur Identifizierung von Standorten auf einer Karte einfacher verwalten zu können. Die Bibliothek enthält Optionen für Folgendes:

  • „gridSize“ (Rastergröße): zum Angeben der Anzahl der Markierungen, die in einem Cluster gruppiert werden sollen
  • „maxZoom“ (maximaler Zoom): zum Festlegen der maximalen Zoomstufe, in der der Cluster angezeigt werden soll
  • „imagePath“ (Bildpfad): für die Bildgrafiken, die als Markierungssymbole verwendet werden sollen

Verbrauch

So kannst du dein Budget planen und die Kosten kontrollieren:

  • Wenn du einen Budgetalarm festlegst, kannst du nachverfolgen, wie deine Kosten zu einem bestimmten Betrag ansteigen. Durch das Festlegen eines Budgets wird die API-Nutzung nicht automatisch gedeckelt. Du wirst lediglich benachrichtigt, wenn sich die Kosten dem festgelegten Limit annähern.
  • Du kannst die tägliche API-Nutzung deckeln, um die Kosten für kostenpflichtige APIs zu steuern. Wenn du Obergrenzen für Anfragen pro Tag festlegst, kannst du deine Kosten begrenzen. Wenn du weißt, wie viel du pro Tag ausgeben möchtest, kannst du mit einer einfachen Gleichung die entsprechende Obergrenze ermitteln: (Monatliche Kosten ÷ Preis pro Nutzung) ÷ 30 = Obergrenze für Anfragen pro Tag (für eine API). Unter Umständen umfasst deine Implementierung mehrere kostenpflichtige APIs. In diesem Fall musst du die Gleichung entsprechend anpassen. Berücksichtige in deinen Berechnungen auch, dass jeden Monat ein Google Maps APIs-Guthaben in Höhe von 200 $ zur Verfügung steht.
  • Du kannst die Nutzung isolieren, priorisieren und nachverfolgen, indem du mehrere Projekte erstellst. Angenommen, du verwendest die Google Maps Platform APIs zu Testzwecken. In diesem Fall kannst du ein eigenes Projekt für Tests erstellen (mit eigenen Kontingenten und API-Schlüsseln), damit die Kosten nicht unerwarteterweise ausufern.

Verbrauch in Maps verwalten

Die Verwendung von nur einer Karte pro Seite ist eine gute Möglichkeit, die Kartendarstellung zu optimieren, da die Nutzer normalerweise immer nur mit einer Karte gleichzeitig interagieren. Deine App kann die Karte so bearbeiten, dass sie je nach Kundeninteraktion und Anforderungen unterschiedliche Datensätze anzeigt.

Statische Bilder verwenden

Anfragen, die dynamische Bilder (Dynamic Maps und Dynamic Street View) nutzen, kosten mehr als statische Bilder (Static Maps und Static Street View). Wenn keine Nutzerinteraktion mit Maps oder Street View (Zoomen oder Schwenken) vorgesehen ist, solltest du die statischen Versionen dieser APIs verwenden.

Thumbnails, also sehr kleine Karten und Fotos, sind eine weitere sinnvolle Verwendung für Static Maps und Static Street View. Diese Elemente werden zu einem niedrigeren Preis und nach Nutzerinteraktion (pro Klick) abgerechnet und der Nutzer kann zur dynamischen Version von Google Maps weitergeleitet werden.

Maps Embed API verwenden

Wenn du eine Karte mit einer einzelnen Markierung oder eine dynamische Karte kostenlos hinzufügen möchtest, kannst du dazu die Maps Embed API verwenden. Die Maps Embed API solltest du für Anwendungen verwenden, bei denen eine einzelne Markierung erforderlich ist, aber keine Kartenanpassung. Für Maps Embed API-Anfragen, bei denen der Modus „directions“, „view“ oder „search“ verwendet wird, fallen Kosten an. Weitere Informationen findest du in der Preisübersicht.

Maps SDKs für mobile Anwendungen verwenden

Verwende für mobile Anwendungen das Maps SDK for Android oder Maps SDK for iOS, wenn eine Karte angezeigt wird. Verwende die Maps Static API oder die Maps JavaScript API, wenn die mobilen SDKs aufgrund der Anforderungen nicht genutzt werden können.

Verbrauch in Routes verwalten

Wegpunkte der Directions API begrenzen

Sofern möglich, solltest du Nutzereinträge in einer Abfrage auf maximal zehn Wegpunkte beschränken. Anfragen mit mehr Wegpunkten werden zu einem höheren Preis abgerechnet.

Directions API-Optimierung für bestmögliche Routenplanung verwenden

Anfragen, für die das Argument zur Wegpunktoptimierung verwendet wird, werden mit einem höheren Preis abgerechnet. Weitere Informationen findest du unter Wegpunkte optimieren.

Das Optimierungsargument sortiert Wegpunkte für eine optimale Route. Das heißt, die Fahrt von A nach E ist in optimierter Form (A-B-C-D-E) nutzerfreundlicher als die Zufallssequenz einer nicht optimierten Route (wie A-D-B-C-E).

Echtzeit-Verkehrsmodelle in der Directions API und der Distance Matrix API verwenden

Directions API- und Distance Matrix API-Anfragen, die Echtzeit-Verkehrsmodelle enthalten, werden zu einem höheren Preis abgerechnet. Echtzeit-Verkehrsmodelle werden aktiviert, indem die Abfahrtszeit auf now festgelegt wird.

Wenn in einer Anfrage Verkehrsmodelle weggelassen werden, basieren die Ergebnisse ausschließlich auf physischen Faktoren wie Straßen, Entfernungen und Geschwindigkeitsbegrenzungen.

„Route Traveled“ und „Nearest Road“ verwenden, wenn GPS-Daten ungenau sind

Die Funktionen „Route Traveled“ und „Nearest Road“ der Maps Roads API sind in der erweiterten Stufe enthalten und werden zu einem höheren Preis abgerechnet. Verwende diese Funktionen, wenn die GPS-Daten ungenau sind und mit der Roads API die richtige Straße ermittelt werden kann. „Speed Limits“, eine weitere Funktion der Roads API, ist nur für Asset-Tracking-Kunden verfügbar.

Orte mit Geschwindigkeitsbegrenzungen in Intervallen von 5 bis 15 Minuten abfragen

Wenn du die Anzahl der Aufrufe an den Speed Limit-Dienst der Maps Roads API reduzieren möchtest, solltest du die Standorte deiner Assets im Intervall von 5 bis 15 Minuten abfragen. Der genaue Wert hängt von der Geschwindigkeit ab, mit der ein Asset bewegt wird. Wenn ein Asset nicht in Bewegung ist, reicht ein einzelnes Standortbeispiel aus. Es müssen nicht mehrere Anrufe erfolgen.

Zur Minimierung der Gesamtlatenz wird empfohlen, den Speed Limit-Dienst für die Geschwindigkeitsbegrenzung aufzurufen, sobald du einige Daten erfasst hast, und nicht jedes Mal, wenn der Standort eines mobilen Assets empfangen wird.

Verbrauch in Places verwalten

Option zur automatischen Vervollständigung verwenden, die zum Anwendungsfall passt

Finde die Option für die automatische Vervollständigung, die am besten zu deinem Anwendungsfall passt. Der Preis für beide ist gleich. Der Unterschied zwischen den beiden Optionen besteht darin, wie die Endnutzer deiner Anwendung die APIs verwenden können.

  • Autocomplete – pro Anfrage: ideal für Anwendungsfälle, bei denen ein einzelner Eintrag ausreicht, beispielsweise ein Formular für die Postanschrift, das ein Nutzer ausfüllt
  • Autocomplete – pro Sitzung: wird empfohlen, wenn mehrere Einträge erforderlich sind, z. B. die Suche nach einem Hotel oder Restaurant

Autocomplete – pro Sitzung ermöglicht unbegrenzte Ergebnisse, erfordert jedoch die Implementierung von Tokens, um sicherzustellen, dass Sitzungen gültig sind. Bei einer ungültigen Sitzung werden Gebühren für Autocomplete – pro Anfrage pro Tastenanschlag berechnet. Das kann zu höheren Kosten führen. Weitere Informationen zu dieser Funktion findest du unter Place Autocomplete (auf Englisch).

Daten für bestimmte Felder in Place Details- und Place Search-Anfragen zurückgeben

Du kannst Place Details- und Place Search-Anfragen anpassen, um Daten für bestimmte Felder zurückzugeben, die in deiner Anwendung verwendet werden. Diese Felder sind in Kategorien unterteilt: Basic, Contact und Atmosphere. Anfragen, für die keine Felder festgelegt sind, erhalten Daten für alle Felder.

Die Abrechnung für Place Detail-Anfragen basiert auf den angeforderten Daten und Mengen. Anfragen, für die keine Felder angegeben sind, werden zum vollen Preis in Rechnung gestellt. Weitere Informationen findest du unter Place Details und Place Search.

Kostensenkung durch Verwenden der Geocoding API

Wenn deine Anwendung vom Nutzer eingegebene Adressen verarbeitet, sind diese Adressen manchmal unklar (unvollständig, falsch geschrieben oder schlecht formatiert). Mach solche Adressen mithilfe der automatischen Vervollständigung eindeutig und rufe dann mithilfe der Orts-IDs die Standorte ab.

Wenn du eine genaue oder ziemlich genaue Adresse hast, kannst du die Kosten senken, indem du Geocoding anstelle der automatischen Vervollständigung verwendest. Weitere Informationen findest du unter Geocoding Addresses Best Practices (auf Englisch).