W tym przewodniku opisano kilka strategii optymalizacji interfejsów API Map Google pod kątem bezpieczeństwa, wydajności i zużycia.
Bezpieczeństwo
Sprawdzone metody zapewniania bezpieczeństwa
Klucze interfejsu API to dane logowania związane z projektem, które wymagają takich samych środków ostrożności co identyfikatory użytkowników i hasła. Zapoznaj się ze sprawdzonymi metodami dotyczącymi bezpieczeństwa interfejsu API, aby zabezpieczyć klucze przed nieumyślnym użyciem, które może prowadzić do nieuzasadnionego wykorzystania limitu i nieoczekiwanych obciążeń na Twoim koncie.
Korzystanie z kluczy interfejsu API do uzyskiwania dostępu do interfejsów API Map Google
Klucze API to preferowana metoda uwierzytelniania umożliwiająca dostęp do interfejsów API Map Google. Identyfikatory klienta są nadal obsługiwane, ale klucze API umożliwiają bardziej szczegółowe kontrolowanie zabezpieczeń i można je dostosować do działania z określonymi adresami internetowymi, adresami IP i pakietami SDK na urządzenia mobilne (na Androida i iOS). Informacje o tworzeniu i zabezpieczaniu klucza interfejsu API znajdziesz na stronie „Korzystanie z klucza interfejsu API” w przypadku każdego interfejsu API lub pakietu SDK. (np. w przypadku interfejsu Maps JavaScript API otwórz stronę Korzystanie z klucza interfejsu API).
Wyniki
Obsługa błędów za pomocą wzrastającego czasu do ponowienia
Jeśli w Twoich aplikacjach występują błędy spowodowane nadmierną liczbą prób wywołania interfejsu API w krótkim czasie, np. błędy dotyczące limitu, rozważ użycie wykładniczego wycofywania, aby umożliwić przetwarzanie żądań.
Wzrost opóźnienia jest najbardziej przydatny w przypadku błędów 500. Więcej informacji znajdziesz w artykule Praca z kodami stanu HTTP.
W szczególności dostosuj tempo swoich zapytań. W kodzie dodaj okres oczekiwania wynoszący S
sekund między zapytaniami. Jeśli zapytanie nadal powoduje błąd związany z kwotą, podwójnie wydłuż czas oczekiwania, a potem prześlij kolejne zapytanie. Kontynuuj dostosowywanie czasu oczekiwania, aż zapytanie zwróci wynik bez błędu.
Wysyłanie żądań interakcji z użytkownikiem na żądanie
Żądania do interfejsów API, które wymagają interakcji z użytkownikiem, powinny być wysyłane tylko na żądanie.
Oznacza to, że musisz poczekać, aż użytkownik wykona jakieś działanie (np. on-click
), aby zainicjować żądanie interfejsu API, a potem użyć wyników do załadowania mapy, ustawienia miejsca docelowego lub wyświetlenia odpowiednich informacji. Korzystanie z metody na żądanie pozwala uniknąć niepotrzebnych żądań do interfejsów API, co zmniejsza ich zużycie.
Unikanie wyświetlania nakładki podczas poruszania mapy
Unikaj używania Draw()
do wyświetlania niestandardowych treści nakładki na mapie w tym samym czasie, gdy użytkownik może przemieszczać mapę. Mapa jest odtwarzana za każdym razem, gdy użytkownik ją przesuwa, więc umieszczanie na niej nakładek w tym samym momencie może powodować opóźnienia lub zacinanie się obrazu. Dodawaj i usuwaj na mapie elementy nakładki dopiero wtedy, gdy użytkownik przestanie przewijać mapę lub powiększać jej widok.
Unikaj intensywnych operacji w metodach Draw
Ogólnie rzecz biorąc, w metodzie Draw()
należy unikać operacji niewymagających rysowania, które mają duży wpływ na wydajność. W kodzie metody Draw()
unikaj na przykład tych elementów:
- zapytania zwracające dużą ilość treści;
- wiele zmian w wyświetlanych danych.
- manipulowanie wieloma elementami modelu DOM;
Te operacje mogą spowolnić działanie i spowodować opóźnienia lub zacinanie się mapy podczas renderowania.
Używanie obrazów rastrowych jako znaczników
Podczas dodawania znaczników, które mają identyfikować lokalizację na mapie, używaj obrazów rastrowych, takich jak pliki PNG lub JPG. Unikaj używania obrazów w formacie SVG, ponieważ ich renderowanie może powodować opóźnienia podczas ponownego rysowania mapy.
znaczniki optymalizacji,
Optymalizacja zwiększa wydajność, renderując wiele znaczników jako pojedynczy element statyczny. Jest to przydatne w przypadku dużej liczby znaczników. Domyślnie interfejs Maps JavaScript API sam decyduje, czy dany znacznik ma być optymalizowany. Jeśli jest duża liczba znaczników, interfejs Maps JavaScript API spróbuje je wyrenderować z optymalizacją. Nie wszystkie znaczniki można zoptymalizować. W niektórych sytuacjach interfejs Maps JavaScript API może być zmuszony do renderowania znaczników bez optymalizacji. Wyłącz optymalizowane renderowanie animowanych GIF-ów lub plików PNG lub gdy każdy znacznik musi być renderowany jako osobny element DOM.
Tworzenie klastrów w celu zarządzania wyświetlaniem znaczników
Aby ułatwić sobie zarządzanie wyświetlaniem znaczników służących do identyfikowania lokalizacji na mapie, utwórz klaster znaczników za pomocą biblioteki MarkerClusterer. Biblioteka Marker Clusterer zawiera opcje:
- Rozmiar siatki, aby określić liczbę znaczników do zgrupowania w klastrze.
- Maksymalne powiększenie, aby określić maksymalny poziom powiększenia, w którym ma być wyświetlany klaster.
- Ścieżki obrazów, które mają służyć jako ikony znaczników.
Oglądanie treści
Aby zaplanować budżet i kontrolować koszty:
- Ustaw alert dotyczący budżetu, aby śledzić, jak rosną Twoje koszty w stosunku do określonej kwoty. Ustawienie budżetu nie ogranicza możliwości korzystania z interfejsu API – tylko wysyła powiadomienie, gdy koszty zbliżają się do określonej kwoty.
Ogranicz dzienne zużycie interfejsu API, aby zarządzać kosztami interfejsów płatnych. Możesz ograniczyć koszty, ustawiając limit żądań na dzień. Aby określić dzienny limit, użyj prostego wzoru, który zależy od tego, ile chcesz wydać: (miesięczny koszt/cena za sztukę)/30 = limit żądań na dzień (dla jednego interfejsu API). Wdrożenie może używać wielu płatnych interfejsów API, dlatego dostosuj obliczenia zgodnie z potrzebami. Każdego miesiąca masz do dyspozycji 200 USD w interfejsach API Map Google, więc uwzględnij to w swoich obliczeniach.
Używaj wielu projektów, aby izolować, ustalać priorytety i śledzić wykorzystanie. Załóżmy na przykład, że regularnie używasz interfejsów API Google Maps Platform w swoich testach. Utworzenie osobnego projektu do testowania (z własnymi limitami i kluczami interfejsu API) pozwoli Ci dokładnie przetestować kampanię, a zarazem uniknąć niespodziewanego przekroczenia wydatków.
Zarządzanie zużyciem w Mapach
Używanie na stronie jednej mapy jest dobrym sposobem na optymalizację wyświetlania map, ponieważ użytkownicy zwykle korzystają tylko z jednej mapy naraz. Aplikacja może manipulować mapą, aby wyświetlać różne zbiory danych w zależności od interakcji z klientem i jego potrzeb.
Używanie obrazów statycznych
Prośby o obrazy dynamiczne (dynamiczne mapy i dynamiczne Street View) są droższe niż prośby o obrazy statyczne (statyczne mapy i statyczne Street View). Jeśli nie przewidujesz interakcji użytkownika z Mapami Google ani Street View (powiększania ani przesuwania), użyj statycznej wersji tych interfejsów API.
Miniatury – bardzo małe mapy i zdjęcia – to kolejne zastosowanie Map Statycznych i Statycznego Street View. Te elementy są rozliczane po niższej stawce i po interakcji użytkownika (po kliknięciu), a użytkownicy mogą przejść do wersji dynamicznej, aby uzyskać pełną wersję Map Google.
Korzystanie z interfejsu Maps Embed API
Za pomocą interfejsu Maps Embed API możesz bezpłatnie dodać mapę z pojedynczym znacznikiem lub mapę dynamiczną. Używaj interfejsu Maps Embed API w przypadku aplikacji, w których potrzebny jest tylko 1 znacznik i nie jest wymagana żadna personalizacja mapy. Żądania interfejsu Maps Embed API korzystające z trybu Wskazówki dojazdu, Trybu wyświetlania lub Trybu wyszukiwania będą rozliczane (szczegóły znajdziesz w tabeli cen).
Korzystanie z pakietów SDK map mobilnych w przypadku aplikacji mobilnych
W przypadku aplikacji mobilnych, podczas wyświetlania mapy użyj pakietu Maps SDK na Androida lub Maps SDK na iOS. Używaj interfejsu Maps Static API lub Maps JavaScript API, gdy wymagania wykluczają użycie pakietów SDK na urządzenia mobilne.
Zarządzanie zużyciem w programie Routes
Ograniczanie punktów pośrednich interfejsu Directions API
W miarę możliwości ograniczaj liczbę wpisów użytkownika w zapytaniu do maksymalnie 10 punktów drogi. Zapytania zawierające więcej niż 10 punktów drogi są rozliczane według wyższej stawki.
Korzystanie z optymalizacji interfejsu Directions API w celu uzyskania optymalnej trasy
Za żądania korzystające z argumentu optymalizacji punktu kontrolnego jest naliczana wyższa stawka. Więcej informacji znajdziesz w artykule Optymalizowanie punktów drogi.
Argument optymalizacji sortuje punkty pośrednie, aby zapewnić optymalne trasy. Oznacza to, że podróż z A do E będzie bardziej płynna, jeśli zostanie zoptymalizowana (A-B-C-D-E), a nie będzie miała losowej sekwencji nieoptymalizowanej trasy (np. A-D-B-C-E).
Korzystanie z modeli natężenia ruchu w czasie rzeczywistym w interfejsach Directions API i Distance Matrix API
Żądania interfejsu Directions API i interfejsu Distance Matrix API, które obejmują modele ruchu w czasie rzeczywistym, są obciążane wyższą stawką.
Modele natężenia ruchu w czasie rzeczywistym są włączane przez ustawienie czasu wyjazdu na now
.
Jeśli w prośbie pominięto modele ruchu, wyniki będą zależeć wyłącznie od czynników fizycznych: dróg, odległości i ograniczeń prędkości.
Używanie opcji Przebyta trasa i Najbliższa droga, gdy dane GPS są niedokładne
Funkcje interfejsu Maps Roads API, czyli Przebyta trasa i Najbliższa droga, są dostępne w pakiecie zaawansowanym i obliczane według wyższej stawki. Używaj tych funkcji, gdy dane GPS są niedokładne, a interfejs Roads API może pomóc w określeniu właściwej drogi. Limity prędkości, kolejna funkcja interfejsu Roads API, jest dostępna tylko dla klientów korzystających z śledzenia zasobów.
próbkowanie lokalizacji ograniczeń prędkości w odstępach 5–15 minut;
Aby zminimalizować liczbę wywołań interfejsu Maps Roads API w usłudze Limit prędkości, pobieraj próbki lokalizacji zasobów w odstępach 5–15 minut. Dokładna wartość zależy od prędkości, z jaką porusza się zasób. Jeśli zasób jest nieruchomy, wystarczy próbka z jednej lokalizacji. Nie musisz wykonywać wielu połączeń.
Aby zminimalizować ogólny czas oczekiwania, wywołaj usługę Limit prędkości po zebraniu pewnych danych, a nie wywołuj interfejsu API za każdym razem, gdy otrzymasz lokalizację zasobu mobilnego.
Zarządzanie konsumpcją w Miejscach
Optymalizowanie implementacji autouzupełniania miejsc
Aby zoptymalizować koszty korzystania z autouzupełniania miejsc:
używać masek pól w widżetach autouzupełniania w JavaScript, Android i iOS, aby zwracać tylko potrzebne pola danych o miejscach.
Wybór opcji płatności zależy od przypadku użycia. W zależności od tego, czy Twoja implementacja korzysta z sesji Autocomplete, zostaniesz obciążony opłatą za SKU Autocomplete – za żądanie lub Autocomplete – za sesję.
Więcej informacji i wskazówki dotyczące wyboru odpowiedniej opcji znajdziesz w artykule Sprawdzone metody optymalizacji kosztów autouzupełniania miejsc.
Zwracanie danych dotyczących określonych pól w żądaniach informacji o miejscu i wyszukiwania miejsc
Możesz dostosowywać żądania dotyczące szczegółów miejsca i wyszukiwania miejsca, aby zwracać dane z konkretnych pól używanych w aplikacji. Te pola są podzielone na kategorie: Podstawowe, Kontakt i Atmosfera. Żądania, które nie określają żadnych pól, otrzymają dane dla wszystkich pól.
Opłaty za żądania dotyczące szczegółów miejsca są naliczane na podstawie typów i ilości danych. Za żądania, które nie zawierają żadnych pól, zostanie naliczona pełna opłata. Więcej informacji znajdziesz w artykułach Szczegóły miejsca i Wyszukiwanie miejsc.
Obniżanie kosztów za pomocą interfejsu Geocoding API
Jeśli Twoja aplikacja obsługuje adresy wpisywane przez użytkownika, adresy te są czasami niejednoznaczne (niekompletne, z błędami ortograficznymi lub źle sformatowane). Wyodrębnij adresy za pomocą autouzupełniania, a potem użyj identyfikatorów miejsc, aby uzyskać ich lokalizacje.
Jeśli masz dokładny adres (lub adres zbliżony do dokładnego), możesz obniżyć koszty, korzystając z geokodowania zamiast autouzupełniania. Więcej informacji znajdziesz w artykule Sprawdzone metody geokodowania adresów.
Jak działają limity Google Maps Platform
Wszystkie nasze interfejsy API mają limity dotyczące liczby wywołań, które może wykonać każdy klient. Te limity są konfigurowane na poziomie minuty. Gdy osiągniesz limit połączeń w danym interfejsie API w ciągu minuty, kolejne połączenia nie będą akceptowane do następnej minuty.
Do limitu wliczane są tylko żądania, które zostały zrealizowane, oraz żądania, które spowodowały błędy serwera. Żądania, które nie przeszły uwierzytelniania, nie są wliczane do limitu.
Szacowanie kosztów korzystania z dowolnego interfejsu GMP API na podstawie łącznej liczby żądań.