Optimierungsleitfaden

Optimierungsstrategien

Sicherheit

Best Practices für die Sicherheit

API-Schlüssel sind projektbezogene Anmeldedaten, die die gleichen Sicherheitsvorkehrungen erfordern wie Nutzer-IDs und Passwörter. Lies unbedingt die Best Practices für API-Schlüssel, um deine Schlüssel vor unbeabsichtigter Verwendung zu schützen, die zu einer unzulässigen Kontingentnutzung und unerwarteten Kosten deines Kontos führen können.

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

API-Schlüssel sind die bevorzugte Authentifizierungsmethode für den Zugriff auf Google Maps Platform APIs. Die älteren 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 im Dokument „API-Schlüssel anfordern“ für die jeweiligen APIs oder SDKs, mit denen du arbeitest. Die Anleitung für die Google Maps JavaScript API findest du beispielsweise unter API-Schlüssel abrufen.

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 zur Nutzerinteraktion 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. Klicken) ausführt, um die API-Anfrage zu initiieren. Dann wird anhand der Ergebnisse eine Karte geladen, 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.

Overlayinhalte beim Verschieben einer Karte nicht anzeigen

Verwende die Methode Draw() nicht, um benutzerdefinierten Overlayinhalt auf einer Karte gleichzeitig mit dem Verschieben der Karte anzuzeigen. 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.

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 für Markierungen verwenden

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

Cluster zum Verwalten der Markierungsanzeige erstellen

Erstelle mithilfe der Marker Clusterer-Bibliothek einen Markierungscluster, um die Anzeige von Markierungen zur Identifizierung von Standorten auf einer Karte zu verwalten. Die Bibliothek „Marker Clusterer“ enthält Optionen für Folgendes:

  • Rastergröße, mit der du die Anzahl der Markierungen angeben kannst, die in einem Cluster gruppiert werden sollen
  • Maximaler Zoom, mit dem du die maximale Zoomstufe festlegen kannst, in der der Cluster angezeigt werden soll
  • Bildpfade für die Bildgrafiken, die als Markierungssymbole verwendet werden sollen

Nutzung optimieren

Nutzung erfassen und einschränken

So kannst du dein Budget besser planen und die Kosten kontrollieren:

  • Wenn du eine Budgetbenachrichtigung festlegst, kannst du erfassen, wie deine Ausgaben bezogen auf einen bestimmten Betrag ansteigen. Durch das Festlegen eines Budgets wird die API-Nutzung nicht begrenzt. Du wirst nur benachrichtigt, wenn der Ausgabebetrag den angegebenen Betrag erreicht.
  • Begrenze die tägliche API-Nutzung, um die Kosten für die Verwendung kostenpflichtiger APIs zu verwalten. Wenn du Obergrenzen für Anfragen pro Tag festlegst, kannst du deine Ausgaben begrenzen. Wenn du weißt, wie viel du pro Tag ausgeben möchtest, kannst du mit einer einfachen Gleichung die entsprechende Obergrenze ermitteln. Beispiel: (Monatliche Ausgaben/Preis pro Nutzung)/30 = Obergrenze für Anfragen pro Tag (für eine API). Unter Umständen nutzt deine Implementierung mehrere kostenpflichtige APIs. In diesem Fall musst du die Gleichung entsprechend anpassen. Denke daran, das Google Maps Platform-Guthaben in Höhe von 200 $ in deiner Rechnung zu berücksichtigen, das dir jeden Monat zur Verfügung steht.

Karten

Die Verwendung einer einzelnen Karte pro Seite ist eine gute Möglichkeit, die Kartendarstellung zu optimieren. Nutzer interagieren im Allgemeinen mit einer Karte gleichzeitig. 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 Static Maps und Static Street View. Wenn keine Nutzerinteraktion mit Maps oder Street View (Zoomen oder Schwenken) vorgesehen sind, solltest du die statischen Versionen dieser APIs verwenden.

Thumbnails, 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 berechnet. Bei Interaktion mit dem Nutzer erfolgt eine Weiterleitung zur dynamischen Version von Google Maps.

Maps Embed API verwenden

Du kannst die Maps Embed API verwenden, um eine Karte mit einer einzelnen Markierung oder eine kostenlose dynamische Karte kostenlos hinzuzufügen. Verwende die Maps Embed API für Anwendungen, bei denen eine einzelne Markierung erforderlich ist und keine Kartenanpassungen notwendig sind. Maps Embed API-Anfragen, für die der Modus „Directions“, „View“ oder „Search“ verwendet wird, werden nun abgerechnet. 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 das Verwenden von Mobile SDKs aufgrund der Anforderungen ausgeschlossen wird.

Routen

Wegpunkte der Directions API begrenzen

Sofern möglich, solltest du Nutzereinträge in einer Abfrage auf maximal 10 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 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 Kunden zur Nachverfolgung von Assets 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.

Orte

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 besteht darin, wie Endnutzer deiner Anwendung die APIs verwenden können.

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

„Autocomplete – Per Session“ 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 – Per Session“ 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). Du kannst Adressen mithilfe der automatischen Vervollständigung voneinander unterscheiden. Verwende dann die Orts-IDs, um die Standorte des Orts zu erhalten.

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).