Optimierungsleitfaden

In diesem Leitfaden werden verschiedene Strategien dafür beschrieben, wie Sie Ihre Nutzung der Google Maps APIs in Bezug auf Sicherheit, Leistung und Verbrauch optimieren.

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 Sie Schlüssel vor unbeabsichtigter Verwendung schützen, die zu einer unzulässigen Kontingentnutzung und unerwarteten Kosten in Ihrem Konto führen kann, erfahren Sie unter Best Practices für die API-Sicherheit.

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 finden Sie auf der Seite „API-Schlüssel verwenden“ für die jeweilige API bzw. das jeweilige SDK. Für die Google Maps JavaScript API ist es beispielsweise diese Seite.

Leistung

Exponentiellen Backoff zur Fehlerbehandlung verwenden

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

Der exponentielle Backoff ist für 500er-Fehler am nützlichsten. Weitere Informationen finden Sie unter Umgang mit HTTP-Rücksendestatuscodes.

Sorgen Sie insbesondere dafür, dass Ihre Abfragen nicht zu schnell aufeinanderfolgen. Fügen Sie in Ihrem Code eine Wartezeit von S Sekunden zwischen den Abfragen hinzu. Wenn die Abfrage weiterhin zu einem „Abfragen pro Sekunde“-Fehler führt, verdoppeln Sie die Wartezeit und senden Sie dann eine weitere Abfrage. Passen Sie die Wartezeit 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 Overlay-Inhalte angezeigt werden

Verwenden Sie Draw() nicht, um benutzerdefinierte Overlay-Inhalte auf einer Karte zu einem Zeitpunkt darzustellen, zu dem der Nutzer gleichzeitig 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 Overlay-Inhalten auf der Karte zu Verzögerungen oder ruckeligen Bildabläufen führen. Overlay-Inhalte 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. Vermeiden Sie beispielsweise Folgendes in Ihrem 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 herabsetzen und das Rendern der Karte verlangsamen oder ruckelige Bildabläufe verursachen.

Rasterbilder als Markierungen verwenden

Wenn Sie Markierungen hinzufügen, um einen Standort auf einer Karte zu identifizieren, verwenden Sie dazu Rasterbilder wie z. B. Bilder im PNG- oder JPG-Format. Vermeiden Sie 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. Deaktivieren Sie 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

Eine nützliche Hilfe beim Verwalten von Markierungen, mit denen Sie Standorte auf einer Karte identifizieren, ist ein Markierungscluster. Diesen erstellen Sie mithilfe der Markierungs-Clustering-Dienstbibliothek. 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 können Sie Ihr Budget planen und die Kosten kontrollieren:

  • Wenn Sie eine Budgetbenachrichtigung erstellen, können Sie im Blick behalten, ob und wenn ja wann Ihre Kosten in die Nähe eines bestimmten Betrags kommen. Durch das Festlegen eines Budgets wird die API-Nutzung nicht automatisch gedeckelt. Sie werden lediglich benachrichtigt, wenn sich die Kosten dem festgelegten Limit annähern.
  • Sie können die tägliche API-Nutzung deckeln, um die Kosten für kostenpflichtige APIs im Griff zu behalten. Mit Obergrenzen für Anfragen pro Tag lassen sich Ihre Kosten begrenzen. Wenn Sie wissen, wie viel Sie pro Tag ausgeben möchten, können Sie 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 Ihre Implementierung mehrere kostenpflichtige APIs. In diesem Fall müssen Sie die Gleichung entsprechend anpassen. Berücksichtigen Sie in Ihren Berechnungen auch, dass pro Monat ein Google Maps APIs-Guthaben in Höhe von 200 $ zur Verfügung steht.
  • Sie können mehrere Projekte verwenden, um die Nutzung zu isolieren, zu priorisieren und im Zeitablauf zu beobachten. Ein Beispiel: Angenommen, Sie verwenden die Google Maps Platform APIs zu Testzwecken. In diesem Fall können Sie ein eigenes Projekt für Tests erstellen (mit eigenen Kontingenten und API-Schlüsseln), damit die Kosten nicht unerwartet 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. Ihre 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, sollten Sie 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 Sie eine Karte mit einer einzelnen Markierung oder eine dynamische Karte kostenlos hinzufügen möchten, können Sie dazu die Maps Embed API verwenden. Die Maps Embed API sollten Sie 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 finden Sie in der Preisübersicht.

Maps SDKs für mobile Anwendungen verwenden

Wenn eine Karte in mobilen Anwendungen angezeigt werden soll, verwenden Sie das Maps SDK for Android oder das Maps SDK for iOS. Verwenden Sie 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, sollten Sie Nutzereinträge in einer Abfrage auf maximal zehn Wegpunkte beschränken. Anfragen mit mehr als 10 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 zu einem höheren Preis abgerechnet. Weitere Informationen finden Sie 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. Verwenden Sie 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 Sie die Anzahl der Aufrufe an den Speed Limit-Dienst der Maps Roads API reduzieren möchten, sollten Sie die Standorte Ihrer 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 Sie einige Daten erfasst haben, und nicht jedes Mal, wenn der Standort eines mobilen Assets empfangen wird.

Verbrauch in Places verwalten

Place Autocomplete-Implementierungen optimieren

So optimieren Sie die Nutzungskosten für den Place Autocomplete-Dienst:

  • Verwenden Sie in den Autocomplete-Widgets für JavaScript, Android und iOS Feldmasken, damit nur die erforderlichen Ortsdatenfelder zurückgegeben werden.

  • Wählen Sie die für Ihren Anwendungsfall passenden Abrechnungsoptionen aus. Abhängig davon, ob in Ihrer Implementierung Autcomplete-Sitzungen verwendet werden oder nicht, wird Ihnen die SKU Autocomplete – Per Request oder Autocomplete – Per Session berechnet.

Weitere Informationen und eine Anleitung zur Auswahl der richtigen Option für Ihren Anwendungsfall finden Sie in den Best Practices für die Place Autocomplete-Kostenoptimierung.

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

Sie können Place Details- und Place Search-Anfragen so anpassen, dass Daten für bestimmte in Ihrer Anwendung genutzte Felder zurückgegeben 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 von Place Details-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 finden Sie unter Place Details und Place Search.

Durch Verwenden der Geocoding API Kosten senken

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

Wenn Sie eine genaue oder ziemlich genaue Adresse haben, können Sie die Kosten senken, indem Sie Geocoding anstelle der automatischen Vervollständigung verwenden. Weitere Informationen finden Sie unter Best Practices für Geocoding-Adressen.

Funktionsweise der Google Maps Platform-Kontingente

In allen unseren APIs gibt es Limits für die Aufrufe durch Kunden. Diese sogenannten Kontingente gelten pro Minute. Sobald Sie das Kontingent für Aufrufe einer bestimmten API pro Minute erreicht haben, werden vor Anbruch der nächsten Minute keine Aufrufe mehr akzeptiert.

Nur erfolgreiche Anfragen und Anfragen, die zu Serverfehlern führen, werden auf das Kontingent angerechnet, Anfragen, deren Authentifizierung fehlschlägt, nicht.

Bei verschiedenen Google Maps APIs wird nicht nur das Kontingent pro Minute erzwungen, sondern zusätzlich eines pro Sekunde. Durch diese Erzwingung pro Sekunde ist nicht unbedingt eine einheitliche Nutzung über die gesamte Minute sichergestellt. Es wird auch nicht verhindert, dass Sie Ihr Kontingent für diese Minute aufbrauchen. Die Erzwingung sorgt aber dafür, dass Sie Ihr Kontingent nicht innerhalb der ersten oder ersten beiden Sekunden einer bestimmten Minute aufbrauchen können. Außerdem sind Sie vor Dienstunterbrechungen bei plötzlichen Nutzungsspitzen geschützt. Eine gute Strategie für den Umgang mit diesen unterschiedlichen Erzwingungen ist, Ihre durchschnittlichen Anfragen pro Minute gleichmäßig auf das Kontingent pro Sekunde zu verteilen.

Die sekundengenauen GMP APIs sind Directions API, Distance Matrix API, Elevation API, Geocoding API, Places API und Roads API.

Kosten für GMP API-Produkte basierend auf der Gesamtzahl Ihrer Anfragen schätzen