Rozwiązywanie problemów

Błędy

W przypadku błędu zwracana jest treść odpowiedzi w standardowym formacie, a kod stanu HTTP jest ustawiany na stan błędu.

Odpowiedź zawiera obiekt z jednym obiektem error z tymi kluczami:

  • code: jest to ten sam stan co w odpowiedzi HTTP.
  • message: krótki opis błędu.
  • status: kod stanu wskazujący charakter błędu.

Na przykład wysłanie nieprawidłowego parametru placeId spowoduje wyświetlenie tego komunikatu o błędzie:

{
  "error": {
    "code": 400,
    "message": "\"placeId\" value is malformed: \"aChIJqaknMTeuEmsRUYCD5Wd9ARM\"",
    "status": "INVALID_ARGUMENT"
  }
}

Możliwe błędy:

Kod Stan Wiadomość Rozwiązywanie problemów
400 INVALID_ARGUMENT Podany klucz jest nieprawidłowy. Klucz interfejsu API jest nieprawidłowy lub nie został uwzględniony w żądaniu. Upewnij się, że podano cały klucz i włączono dla niego interfejs API.
400 INVALID_ARGUMENT Parametr „"path"” zawiera nieprawidłową wartość: ☃”. Żądanie zawiera nieprawidłowe argumenty. Najczęstsze przyczyny tego błędu to:
  • problem z parametrem path,
    Sprawdź, czy masz co najmniej 1 punkt i mniej niż 100 punktów. Każdy punkt powinien być parą liczb oddzieloną przecinkiem, na przykład: 48.409114,-123.369158. Punkty powinny być rozdzielone pionową kreską: „|”.
  • Twoje żądanie zawiera nieprawidłową wartość placeId.
  • Twoje żądanie zawierało zarówno placeId, jak i path. W każdej prośbie można podać tylko jeden z tych parametrów.

Ten błąd nie zostanie zwrócony, jeśli placeId zostanie przekazany dla drogi, która już nie istnieje, lub dla miejsca, które nie jest drogą.

403 PERMISSION_DENIED Zablokowano żądanie niezarejestrowanego użytkownika. Zarejestruj się w Google Developers Console. Prośba została odrzucona z jednego z tych powodów:
  • Brak klucza API lub jest on nieprawidłowy.
  • Na Twoim koncie nie włączono płatności.
  • Przekroczono ustalony przez Ciebie limit wykorzystania.
  • podana forma płatności nie jest już ważna (np. karta kredytowa straciła ważność);

Aby korzystać z usług Google Maps Platform, musisz mieć włączone płatności na swoim koncie, a wszystkie żądania muszą zawierać prawidłowy klucz interfejsu API. Aby rozwiązać ten problem:

404 NOT_FOUND W przypadku tej usługi wymagane jest HTTPS. Upewnij się, że wysyłasz żądania do adresu https://roads.googleapis.com/, a nie http://roads.googleapis.com/.
429 RESOURCE_EXHAUSTED Żądanie zostało ograniczone z powodu osiągnięcia limitu żądań projektu. Przekroczono limit próśb skonfigurowany w konsoli Google Cloud Platform. Ten limit jest zwykle ustawiany jako liczba żądań na dzień, liczba żądań na 100 sekund i liczba żądań na 100 sekund na użytkownika. Ten limit powinien być skonfigurowany tak, aby uniemożliwić pojedynczym użytkownikom lub niewielkiej grupie użytkowników wyczerpanie dziennej puli, zachowując przy tym odpowiedni dostęp dla wszystkich użytkowników. Aby skonfigurować te limity, zapoznaj się z artykułem Ograniczanie użycia interfejsu API.

Wzrastający czas do ponownej próby

Gdy żądania kończą się niepowodzeniem, należy je powtórzyć z użyciem algorytmu Exponential back-off. Jeśli np. żądanie nie powiedzie się za pierwszym razem, spróbuj ponownie po 1 sekundzie. Jeśli nie powiedzie się to ponownie, spróbuj po 2 sekundach, potem po 4 sekundach itd. Dzięki temu nie dochodzi do zalewania serwerów Google nieprawidłowymi żądaniami lub błędami na dużą skalę, ponieważ wielu klientów próbuje bardzo szybko powtórzyć żądania.

Najczęstsze pytania dotyczące rozwiązywania problemów

Problemy z implementacją

Jak często należy pobierać próbki lokalizacji pojazdu?
Zalecamy, aby w przypadku wysokiej jakości wyników „gotowych do wdrożenia” stosować odstępy 1–10 sekund.
Czy istnieje limit liczby punktów, które mogę wysłać w przypadku jednego zapytania?
Tak, zapytanie może mieć maksymalnie 100 punktów.
Jakiego poziomu dokładności powinienem używać do przechowywania par współrzędnych szerokości i długości geograficznej?
Aby zapewnić, że ścieżki przycinane będą podążać za drogami na wszystkich poziomach powiększenia, nawet na maksymalnym poziomie powiększenia, pary współrzędnych przyciętych na szerokość i długość geograficzną należy przechowywać z dokładnością do 7 miejsc po przecinku.
Czy do wyświetlania ścieżek z przyciąganiem mogę używać zakodowanych linii łamanych?
Zakodowane linie łamanye są określane tylko z dokładnością do 5 miejsc po przecinku, co powoduje błąd wynoszący około 2 metry. Dlatego zakodowane wielokąty nie są odpowiednie, jeśli chcesz, aby ścieżki przyciągane do siatki podążały za drogą przy dużym powiększeniu.

Typowe problemy

Niektóre punkty nie są łączone lub występują luki w ścieżkach. Jak mogę to naprawić?
  • Jeśli próbkujesz punkty w określonych odstępach czasu, upewnij się, że są one próbkowane w krótszych odstępach (co 1–10 sekund). Jeśli użyjesz dłuższego przedziału (np. 60 sekund), algorytm dopasowywania do drogi może nie być w stanie określić przejechanych dróg z wystarczającą dokładnością.
  • Jeśli punkty na mapie tworzysz ręcznie, możesz łatwo tworzyć ścieżki z niewielką liczbą punktów lub z punktami rozrzuconymi, które algorytm łamania nie radzi sobie dobrze. Algorytm łamania działa najlepiej w przypadku punktów, które są blisko siebie. Aby przetestować ścieżki, możesz skorzystać z demonstracji funkcji Dopasuj do dróg lub użyć kontrolera dróg.
Dlaczego po przybliżeniu ścieżki są postrzępione lub nieco odbiegają od drogi?
  • Czy przed wyświetleniem skracasz dokładność par współrzędnych geograficznych? Przechowywanie par współrzędnych geograficznych z dokładnością mniejszą niż 7 cyfr po przecinku powoduje błędy dokładności podczas wyświetlania ścieżki na mapie.
  • Czy używasz zakodowanych wielokątów? Zakodowane linie wielokątne skracają pary współrzędnych szerokości i długości geograficznej do 5 miejsc po przecinku, co powoduje błąd kilku metrów. W wyniku linie są postrzępione lub nieco odbiegają od drogi przy dużym powiększeniu.

Jeśli żadna z tych opcji nie jest prawdziwa, kafelki mapy mogły zostać niedawno zaktualizowane, przez co mogą być niezsynchronizowane z indeksem dróg używanym do snapowania. Jeśli problem dotyczy tylko kilku zapytań, prawdopodobnie jest to przyczyna. Mapy Google są regularnie aktualizowane, więc czasami może się to zdarzyć. Może się to zdarzać częściej, jeśli regularnie przeglądasz stare ścieżki na mapie (np. ścieżki, które zostały utworzone kilka tygodni temu). Aby zapewnić optymalną wizualizację, przed wyświetleniem starych ścieżek należy je ponownie przyciąć, aby zminimalizować niezgodności między kafelkami mapy a indeksem dróg używanym do przycinania.

Co może spowodować nieprawidłowe wyświetlanie ograniczenia prędkości na drodze X?
Ograniczenia prędkości pochodzą z kilku źródeł o różnej dokładności i zasięgu. Jeśli zauważysz pewien schemat, np. że ograniczenia prędkości na drogach danego typu lub w danym obszarze są stale nieprawidłowe, poinformuj nas o tym w ten sposób:
  1. Otwórz Mapy Google na komputerze albo na urządzeniu z Androidem.
  2. Otwórz menu po lewej stronie.
  3. Wybierz Prześlij opinię. Uwaga: może pojawić się prośba o zalogowanie.
  4. Kliknij Edytuj mapę.
  5. Wybierz odcinek drogi, który chcesz edytować.
  6. Kliknij Dalej.
  7. W polu „Inne” zaznacz, że ograniczenie prędkości jest nieprawidłowe dla tej drogi.
  8. Wybierz Prześlij.
Tutaj możesz też zgłaszać inne problemy (np. jeśli droga ma nieprawidłową nazwę, jest nieprawidłowo narysowana, zamknięta lub prywatna).
Dlaczego ścieżka przypięta do ścieżki 3D ucina narożniki zamiast podążać za drogą?
Aby rozwiązać ten problem, sprawdź te kwestie:
  • Upewnij się, że parametr interpolate ma wartość true.
  • Sprawdź, czy oryginalne punkty danych są próbkowane w wystarczająco krótkich odstępach czasu (co 1–10 sekund).
Dlaczego na ścieżce przyklejonej do drogi z niezmienną prędkością wyświetla się tak wiele odcinków drogi?
Jeśli parametr interpolate ma wartość true, zapytanie dotyczące dopasowania do drogi zwraca linię łamaną, która podąża za drogą wokół zakrętów, łuków i ronda. Jeśli droga jest kręta, zwracane są różne odcinki drogi, nawet jeśli limit prędkości się nie zmienia, aby utworzyć polilinię, która dokładnie odzwierciedla geometrię drogi.