W tym przewodniku opisujemy kilka strategii optymalizacji korzystania z interfejsów API Map Google pod kątem bezpieczeństwa, wydajności i zużycia.
Bezpieczeństwo
Przeglądanie sprawdzonych metod zapewniania bezpieczeństwa
Klucze interfejsu API to dane uwierzytelniające powiązane z projektem, które wymagają takich samych środków ostrożności jak identyfikatory użytkowników i hasła. Zapoznaj się ze sprawdzonymi metodami dotyczącymi zabezpieczeń interfejsu API, aby chronić klucze przed niezamierzonym użyciem, które może prowadzić do nieuzasadnionego wykorzystania limitu i nieoczekiwanych opłat na koncie.
Korzystanie z kluczy interfejsu API w celu uzyskania dostępu do interfejsów API Map Google
Klucze interfejsu API są preferowaną metodą uwierzytelniania w przypadku uzyskiwania dostępu do interfejsów API Map Google. Chociaż używanie identyfikatorów klienta jest nadal obsługiwane, klucze interfejsu API obsługują bardziej szczegółowe ustawienia zabezpieczeń i można je dostosować do działania z określonymi adresami internetowymi, adresami IP i pakietami SDK na urządzenia mobilne (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. (np. w przypadku Maps JavaScript API wejdź na stronę Używanie klucza interfejsu API).
Wydajność
Obsługa błędów za pomocą wzrastającego czasu do ponowienia
Jeśli w aplikacjach występują błędy spowodowane zbyt dużą liczbą prób wywołania interfejsu API w krótkim czasie, np. błędy związane z limitami, rozważ użycie wzrastającego czasu do ponowienia, aby umożliwić przetwarzanie żądań. Wzrastający czas do ponowienia jest najbardziej przydatny w przypadku błędów z zakresu 500.
W szczególności dostosuj tempo wysyłania zapytań. W kodzie dodaj okres oczekiwania wynoszący S s między zapytaniami. Jeśli zapytanie nadal powoduje błąd limitu, podwój czas oczekiwania i wyślij kolejne zapytanie. Dostosowuj czas oczekiwania, aż zapytanie zostanie zwrócone bez błędu.
Wysyłanie żądań interakcji z użytkownikiem na żądanie
Żądania do interfejsów API, które obejmują interakcję z użytkownikiem, powinny być wysyłane tylko na żądanie.
Oznacza to, że należy poczekać, aż użytkownik wykona działanie (np. on-click), aby zainicjować żądanie do interfejsu API, a następnie użyć wyników do wczytania mapy, ustawienia miejsca docelowego lub wyświetlenia odpowiednich informacji. Podejście na żądanie pozwala uniknąć niepotrzebnych żądań do interfejsów API, co zmniejsza ich wykorzystanie.
Unikanie wyświetlania treści nakładki, gdy mapa się przesuwa.
Unikaj używania Draw() do wyświetlania niestandardowych treści nakładki na mapie w tym samym czasie, gdy użytkownik może przesuwać mapę. Mapa jest odświeżana za każdym razem, gdy użytkownik ją przesuwa, więc umieszczenie na niej nakładki może powodować opóźnienia lub zacinanie się obrazu. Dodawaj lub usuwaj treści nakładki z mapy tylko wtedy, gdy użytkownik przestanie przesuwać lub powiększać.
Unikanie operacji wymagających dużej ilości zasobów w metodach Draw
Ogólna zasada jest taka, że w metodzie Draw() należy unikać operacji, które nie są związane z rysowaniem i wymagają dużej wydajności. Na przykład unikaj tych elementów w kodzie metody Draw():
- zapytania, które zwracają dużą ilość treści;
- Wiele zmian w wyświetlanych danych.
- manipulowanie wieloma elementami obiektowego modelu dokumentu (DOM);
Te operacje mogą spowolnić działanie i powodować opóźnienia lub zacinanie się obrazu podczas renderowania mapy.
Używanie obrazów rastrowych jako znaczników
Podczas dodawania znaczników do identyfikacji lokalizacji na mapie używaj obrazów rastrowych, np. w formacie PNG lub JPG. Unikaj używania obrazów w formacie SVG (Scalable Vector Graphics), ponieważ ich renderowanie może powodować opóźnienia podczas ponownego rysowania mapy.
Optymalizowanie znaczników
Optymalizacja zwiększa wydajność dzięki renderowaniu wielu znaczników jako jednego elementu statycznego. Jest to przydatne, gdy wymagana jest duża liczba znaczników. Domyślnie interfejs Maps JavaScript API decyduje, czy znacznik zostanie zoptymalizowany. Jeśli znaczników jest dużo, interfejs Maps JavaScript API spróbuje je wyrenderować ze zoptymalizowanymi ustawieniami. Nie wszystkie znaczniki można zoptymalizować. W niektórych sytuacjach interfejs Maps JavaScript API może wymagać renderowania znaczników bez optymalizacji. Wyłącz zoptymalizowane renderowanie animowanych plików GIF lub PNG albo gdy każdy znacznik musi być renderowany jako osobny element DOM.
Tworzenie klastrów do zarządzania wyświetlaniem znaczników
Aby ułatwić zarządzanie wyświetlaniem znaczników identyfikujących lokalizacje na mapie, utwórz klaster znaczników za pomocą biblioteki Marker Clusterer. 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, przy którym klaster ma być wyświetlany.
- Ścieżki obrazów, które mają być używane jako ikony znaczników.
Oglądanie treści
Informacje o zarządzaniu kosztami Google Maps Platform, w tym o tworzeniu budżetów, modyfikowaniu limitów i ustawianiu alertów, znajdziesz w artykule o zarządzaniu kosztami.