Przewodnik optymalizacji

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

W tym przewodniku znajdziesz kilka strategii optymalizacji wykorzystania interfejsów API Map Google pod kątem bezpieczeństwa, wydajności i użytkowania.

Bezpieczeństwo

Sprawdzone metody ochrony bezpieczeństwa

Klucze API to dane logowania związane z projektem, które zasługują na te same środki ostrożności co identyfikatory użytkowników i hasła. Zapoznaj się ze sprawdzonymi metodami dotyczącymi zabezpieczeń interfejsu API, aby zabezpieczyć klucze przed nieoczekiwanym użyciem, co może skutkować nadmiernym wykorzystaniem limitu i nieoczekiwanymi opłatami.

Dostęp do interfejsów API Map Google za pomocą kluczy interfejsu API

Klucze API są preferowaną metodą uwierzytelniania dostępu do interfejsów API Map Google. Obecnie identyfikatory klienta są nadal obsługiwane, ale klucze interfejsu API obsługują bardziej szczegółowe ustawienia zabezpieczeń i można je dostosować do określonych adresów internetowych, adresów IP i mobilnych pakietów SDK (Android i iOS). Informacje o tworzeniu i zabezpieczaniu klucza interfejsu API znajdziesz na stronie „Korzystanie z klucza interfejsu API” dla każdego interfejsu API lub pakietu SDK. Na przykład w przypadku interfejsu Maps JavaScript API interfejs API jest dostępny na stronie Używanie klucza interfejsu API.

Wydajność

Postępowanie wykładnicze w przypadku błędów

Jeśli w Twoich aplikacjach występują błędy spowodowane nadmierną próbą wywołania interfejsu API w krótkim czasie, na przykład błędami zapytań na sekundę, rozważ skorzystanie z generowania wykładniczego ponowienia, aby umożliwić proces żądania.

Wykładnicze ponowienie jest najbardziej przydatne w przypadku błędów w 500s. Więcej informacji znajdziesz w artykule Obsługa kodów stanu zwrotów HTTP.

W szczególności dostosuj tempo zapytań. W kodzie dodaj czas oczekiwania między zapytaniami wynoszący S s. Jeśli zapytanie nadal powoduje wystąpienie błędu QPS, podwój okres oczekiwania i wyślij kolejne zapytanie. Kontynuuj dostosowywanie okresu oczekiwania, aż zapytanie zwróci bez błędu.

Wysyłanie żądań interakcji na żądanie

Żądania do interfejsów API zawierające interakcje użytkownika powinny być wysyłane tylko na żądanie. Oznacza to, że użytkownik musi zaczekać na wykonanie działania (np. on-click), by zainicjować żądanie do interfejsu API, a następnie użyć wyników do załadowania mapy, ustawienia miejsca docelowego lub wyświetlenia odpowiednich informacji. Użycie podejścia na żądanie pozwala uniknąć zbędnych żądań do interfejsów API, co zmniejsza wykorzystanie interfejsu API.

Unikanie wyświetlania zawartości nakładki podczas przesuwania mapy

Nie używaj znaczników Draw() do wyświetlania na mapie niestandardowych treści widocznych w tym samym czasie, w którym użytkownik może przesuwać mapę. Mapa jest ponownie rysowana za każdym razem, gdy użytkownik porusza mapę, dlatego jednoczesne umieszczenie treści na mapie może spowodować opóźnienia lub wizualne zacinanie. Dodawaj i usuwaj treść mapy dopiero po zatrzymaniu przesunięcia lub powiększenia.

Unikaj intensywnych operacji w Draw metodach

Ogólnie rzecz biorąc, w metodzie Draw() nie zalecamy operacji wymagających dużej wydajności, ponieważ nie są one rysowane. Unikaj na przykład takich działań w kodzie metody Draw():

  • Zapytania, które zwracają dużą ilość treści.
  • Wiele zmian w wyświetlanych danych.
  • manipulowanie wieloma elementami DOM.

Operacje te mogą spowalniać działanie i prowadzą do opóźnienia lub wizualnego zacinania się podczas renderowania mapy.

Używanie obrazów rastrowych do oznaczania

Do oznaczania lokalizacji na mapie używaj obrazów rastrowych, np. w formacie PNG lub JPG. Unikaj używania obrazów SVG (Scalable Vector Graphics), ponieważ renderowanie obrazów SVG może powodować opóźnienia podczas ponownego tworzenia mapy.

Optymalizacja znaczników

Optymalizacja zwiększa skuteczność przez renderowanie wielu znaczników jako pojedynczego elementu statycznego. Jest to przydatne w przypadkach, gdy wymagana jest duża liczba znaczników. Domyślnie interfejs Maps JavaScript API określa, czy znacznik będzie optymalizowany. W przypadku dużej liczby znaczników interfejs Maps JavaScript API spróbuje renderować znaczniki za pomocą optymalizacji. Nie wszystkie znaczniki można zoptymalizować. W niektórych przypadkach interfejs Maps JavaScript API może wymagać renderowania znaczników bez optymalizacji. Wyłącz renderowanie zoptymalizowane w przypadku animowanych GIF-ów lub plików PNG albo wtedy, gdy każdy znacznik musi być renderowany jako osobny element DOM.

Tworzenie klastrów do zarządzania wyświetlaniem znaczników

Aby ułatwić sobie wyświetlanie znaczników w celu identyfikowania lokalizacji na mapie, utwórz klaster znaczników za pomocą biblioteki Marker klastra. Biblioteka klasyfikatorów znaczników zawiera opcje:

  • Rozmiar siatki, aby określić liczbę znaczników do zgrupowania w klastrze.
  • Maksymalne powiększenie pozwalające określić maksymalny poziom powiększenia, na którym będzie wyświetlany klaster.
  • Ścieżki do obrazów, które mają być używane jako ikony znaczników.

Konsumpcja

Aby zaplanować budżet i kontrolować koszty, wykonaj następujące czynności:

  • Ustaw alert dotyczący budżetu, aby śledzić wzrost kosztów do określonej kwoty. Ustawienie budżetu nie ogranicza wykorzystania interfejsu API – powiadamia Cię tylko wtedy, gdy koszty zbliżają się do określonej kwoty.
  • Ogranicz dzienne korzystanie z interfejsów API, aby zarządzać kosztami płatnych interfejsów API. Ustawiając limity żądań dziennie, możesz ograniczyć koszty. Użyj prostego równania, aby określić limit dzienny w zależności od tego, ile chcesz wydać: (koszt miesięczny / cena za każdą))/30 = żądania dziennie (za jeden interfejs API). W konkretnej implementacji możesz używać wielu płatnych interfejsów API, więc w razie potrzeby dostosuj równanie. W każdym miesiącu dostępny jest środek do wykorzystania w interfejsie API Map Google na kwotę 200 USD. Weź to pod uwagę podczas obliczeń.
  • Możesz użyć wielu projektów, aby wyodrębnić i określić priorytety oraz śledzić wykorzystanie. Załóżmy na przykład, że regularnie testujesz interfejsy API Google Maps Platform. Dzięki utworzeniu osobnego projektu na potrzeby testów – z własnymi limitami i kluczami interfejsu API – możesz dokładnie przeprowadzać testy, a jednocześnie chronić się przed nieoczekiwanymi kosztami.

Zarządzanie konsumpcją w Mapach

Użycie pojedynczej mapy na stronę jest dobrym sposobem na optymalizację wyświetlania map, ponieważ użytkownicy zwykle komunikują się tylko z jedną mapą naraz. Aplikacja może manipulować mapą, aby wyświetlać różne zbiory danych w zależności od interakcji i potrzeb klienta.

Korzystanie z obrazów statycznych

Żądania korzystające ze zdjęć dynamicznych (dynamicznych map i dynamicznego widoku ulicy) kosztują więcej niż statyczne mapy i statyczny widok Street View. Jeśli nie przewidujesz interakcji użytkownika z mapą lub Street View (powiększaniem lub przesuwaniem), użyj statycznych wersji tych interfejsów API.

Miniatury – bardzo małe mapy i zdjęcia – to dobre rozwiązanie w przypadku Map statycznych i Street View. Elementy te są rozliczane według niższej stawki i po interakcji przez użytkownika (kliknięcie). Mogą też prowadzić użytkowników do wersji dynamicznej, z której mogą korzystać w pełni z Map Google.

Korzystanie z interfejsu Maps Umieszczanie API

Mapę możesz dodać bezpłatnie za pomocą interfejsu Umieszczanie interfejsu API Map Google. Pojedynczy znacznik lub mapa dynamiczna. Używaj interfejsu Maps Umieść API w aplikacjach, w których pojedynczy znacznik nie wymaga dostosowywania mapy. Opłaty za żądania osadzenia interfejsu API Map Google są naliczane za pomocą trybu wyznaczania trasy, trybu widoku lub trybu wyszukiwania (szczegóły znajdziesz w tabeli cen).

Używanie pakietów SDK map mobilnych dla aplikacji mobilnych

W przypadku aplikacji mobilnych podczas wyświetlania mapy użyj pakietu Maps SDK na Androida lub Maps SDK na iOS. Jeśli wymagania nie pozwalają na używanie mobilnych pakietów SDK, użyj interfejsu Statyczny interfejs API Map Google lub Maps JavaScript API.

Zarządzanie konsumpcją w trasach

Ograniczanie punktów dostępu do Route API

Jeśli to możliwe, ogranicz wpisy użytkowników do zapytania maksymalnie 10 punktów. Żądania zawierające więcej niż 10 punktów trasy są rozliczane według wyższej stawki.

Korzystanie z optymalizacji trasy dojazdu w celu uzyskania optymalnej trasy

Żądania korzystające z argumentu optymalizacji punktu pośredniego są rozliczane według wyższej stawki. Więcej informacji znajdziesz w artykule Optimize Waypoints.

Argument optymalizacji optymalizuje punkty punktów, aby zapewnić optymalną trasę, co oznacza, że podróże z A do E są wygodniejsze w przypadku optymalizacji (A-B-C-D-E) niż losowa sekwencja niezoptymalizowanej trasy (np. A-D-B-C-E).

Korzystanie z modeli ruchu w czasie rzeczywistym w DIRECTION API i DISTANCE Matrix API

Żądania interfejsu DIRECTION API i interfejsu DISTANCE Matrix API, które obejmują modele ruchu w czasie rzeczywistym, są rozliczane według wyższej stawki. Modele natężenia ruchu w czasie rzeczywistym są włączone przez ustawienie godziny odjazdu na now.

Jeśli modele ruchu są pomijane w żądaniu, wyniki są oparte wyłącznie na czynnikach fizycznych: drogach, odległościach i prędkościach.

Korzystanie z przebytej trasy i najbliższej drogi, gdy dane GPS są niedokładne

Zaawansowane funkcje interfejsu Maps Roads API oraz Route Travel i Najbliższa droga są rozliczane według wyższej stawki. Używaj tych funkcji, gdy dane GPS są niedokładne, a interfejs API Roads pomoże Ci określić właściwą drogę. Ograniczenia prędkości, inna funkcja interfejsu Roads API, są dostępne tylko dla klientów korzystających ze śledzenia zasobów.

Próbki lokalizacji ograniczeń prędkości w 5–15-minutowych przedziałach

Aby zminimalizować liczbę wywołań funkcji ograniczenia prędkości w Mapach drogowy, próbkuj lokalizacje swoich zasobów w interwałach trwających od 5 do 15 minut. Dokładna wartość zależy od szybkości poruszania się zasobu. Jeśli zasób jest nieruchomy, wystarczająca jest próbka pojedynczej lokalizacji. Nie trzeba wykonywać wielu połączeń.

Aby zminimalizować ogólny czas oczekiwania, wywołaj usługę ograniczenia prędkości, gdy zbierzesz jakieś dane, zamiast wywoływać interfejs API po każdym otrzymaniu lokalizacji zasobu mobilnego.

Zarządzanie konsumpcją w Miejscach

Optymalizacja implementacji autouzupełniania miejsc

Aby zoptymalizować koszty korzystania z funkcji autouzupełniania miejsc:

  • używać masek pól w widżetach autouzupełniania w JavaScript, Androidzie i iOS do zwracania tylko tych pól danych, których potrzebujesz.

  • Wybór opcji płatności zależy od konkretnego przypadku użycia. W zależności od tego, czy Twoja implementacja korzysta z sesji autouzupełniania, opłaty będą naliczane w ramach kodów SKU Autouzupełnianie – na żądanie lub Autouzupełnianie – na sesję.

Więcej informacji i wskazówek dotyczących wyboru odpowiedniej opcji znajdziesz w artykule Sprawdzone metody związane z optymalizowaniem kosztów autouzupełniania.

Zwracanie danych dotyczących konkretnych pól w informacjach o miejscach i żądaniach wyszukiwania miejsc

Możesz dostosować szczegóły dotyczące miejsc i żądania wyszukiwania miejsc, aby zwracały dane dotyczące konkretnych pól używanych w Twojej aplikacji. Te pola dzielą się na kategorie: Podstawowe, Kontakt i Atmosfera. Żądania, które nie określają żadnych pól, będą otrzymywać dane dotyczące wszystkich pól.

Rozliczenia za żądania dotyczące szczegółów miejsca zależą od typów i ilości danych, o które prosisz. Żądania, które nie obejmują żadnych pól, będą rozliczane według pełnej stawki. Więcej informacji znajdziesz w sekcjach Miejsce szczegółów i Wyszukiwanie miejsc.

Obniżanie kosztów dzięki interfejsowi Geocoding API

Jeśli aplikacja obsługuje adresy wpisane przez użytkowników, adresy te są czasami niejednoznaczne (niepełne, błędnie zapisane lub źle sformatowane). Ustaw adresy autouzupełniania, a następnie użyj identyfikatorów miejsc, aby wyświetlić lokalizacje.

Jeśli masz dokładny adres (lub zbliżony do niego), możesz zmniejszyć koszty, korzystając z geokodowania zamiast autouzupełniania. Więcej informacji znajdziesz w artykule Sprawdzone metody geokodowania adresów.

Jak działają limity w Google Maps Platform

Wszystkie interfejsy API mają ograniczoną liczbę wywołań. Limity te konfiguruje się co minutę. Jeśli w ciągu minuty osiągniesz limit wywołań danego interfejsu API, kolejne wywołania nie będą przyjmowane aż do następnej minuty.

Do limitu wliczają się tylko te żądania, które zakończyły się powodzeniem i które powodują błędy serwera. Żądania, które nie przeszły uwierzytelniania, nie wliczają się do limitu.

Oprócz interfejsu wymuszane jest też stosowanie kilku interfejsów API Map Google na sekundę. Egzekwowanie tej sekundy nie zapewnia jednolitego wykorzystania w ciągu całej minuty i nie uniemożliwia osiągnięcia limitu wykorzystania na daną minutę. Zapobiega to wykorzystaniu całego limitu w ciągu pierwszej lub dwóch sekund każdej minuty i pozwala uniknąć przerw w działaniu usługi w przypadku nagłych wzrostów wykorzystania. Aby uwzględnić te różnice w egzekwowaniu zasad, zaplanuj wykorzystanie limitu i określ jego wymagania, uśredniając liczbę zapytań na minutę w QPS.

Interfejsy API GMP, które korzystają z tego egzekwowania sekund, to DIRECTION API, DISTANCE Matrix API, Elevation API, Geocoding API, Placess API i Roads API.

Oszacuj koszty dowolnej usługi GMP API na podstawie łącznej liczby żądań.