Najczęstsze pytania

Szczegóły usługi

Problemy

Sieć

Dane

Dostosowywanie interfejsu

Routing

Symulator

Przepływy pracy

Usługi mobilne

Szczegóły usługi

Aplikacja musi wyświetlać okno z Warunkami korzystania z pakietu Navigation SDK, które każdy kierowca musi zaakceptować. W tym oknie kierowca może zaakceptować Warunki korzystania z usługi. Plik tekstowy z warunkami jest dołączony do pakietu Navigation SDK.
W Androidzie użyj metody NavigationApi.showTermsAndConditionsDialog, aby wyświetlić okno z warunkami.
W systemie iOS wywołaj GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName.
Wszystkie języki obsługiwane przez Mapy Google na komórki są automatycznie dostępne w pakiecie Navigation SDK. Urządzenie ma domyślny język systemu, którego aplikacja nie może zmienić. Aplikacja ma jednak dostęp do ponad 70 języków.

Tak. W Androidzie po uruchomieniu LocationListener działa w tle. Aplikacja nadal przyciąga pozycję do drogi i utrzymuje kierunek.

Aby w systemie iOS nadal otrzymywać w tle informacje o lokalizacji i kierunku, zaimplementuj przyciąganie do drogi i ustaw allowsBackgroundLocationUpdates na YES.

Tak. Gdy trasa zostanie utworzona lub zmieniona, RouteChangeListener udostępnia linie łamane.

Nie, pakiet Navigation SDK nie wymaga zainstalowania Map Google na urządzeniu mobilnym.
Nie, pakiet Navigation SDK nie udostępnia obecnie tej funkcji.
Tak. Kierunek ruchu jest dostępny i wyświetlany domyślnie.

Problemy

W Xcode 12 aplikacje nie są prawidłowo kompilowane na potrzeby symulatora. Jak rozwiązać ten problem?

Aby rozwiązać ten problem, otwórz ustawienia kompilacji projektu Xcode i dodaj arm64 do Excluded Architectures tylko w przypadku kompilacji „iOS Simulator”.

Więcej informacji znajdziesz w tym wątku na StackOverflow.

GMSMapView nie wczytuje się.

Jeśli GMSMapView się nie wczytuje:

  • Sprawdź, czy pakiet NavSDK jest włączony w konsoli Cloud.
  • Jeśli pakiet Navigation SDK jest zainstalowany, ale Twój projekt nie korzysta z interfejsów API tego pakietu, usuń go z pliku binarnego.

Sieć

Jak Navigation SDK radzi sobie ze słabym połączeniem?
Pakiet Navigation SDK wstępnie zapisuje w pamięci podręcznej trasę każdej podróży. Wstępnie zapisane informacje obejmują informacje o trasie na 15–20 minut oraz alternatywne trasy na wypadek, gdyby kierowca zboczył z trasy. Pakiet Navigation SDK określa przybliżoną pozycję za pomocą GPS-a i czujników urządzenia.
Czy jest dostępny tryb offline?
Nie, pakiet Navigation SDK nie oferuje obecnie trybu offline, ale udostępnia wstępnie zapisane informacje o podróży.

Dane

Czy mogę pobrać wszystkie przystanki/miejsca docelowe na trasie przed rozpoczęciem podróży?

Tak. Aby pobrać wskazówki dojazdu na Androidzie, wywołaj Navigator.getRouteSegments().

W iOS wywołaj funkcję GMSNavigator.routeLegs(read).

Czy szczegółowe wskazówki dojazdu są dostępne na początku trasy?
Tak. Pakiet Navigation SDK udostępnia listę segmentów trasy. Kierowca może też przesuwać palcem po karcie wskazówek w nagłówku, aby zobaczyć każdy manewr.
Jak szacowany czas dotarcia na miejsce jest przekazywany użytkownikom aplikacji?

Aby przekazywać użytkownikom aplikacji informacje o szacowanym czasie dotarcia na miejsce, wykonaj te czynności na urządzeniu z Androidem:

  1. Pobierz czas i odległość dla wszystkich punktów pośrednich za pomocą Navigator.getTimeAndDistanceList().
  2. Przekaż te informacje do aplikacji klienckiej tak samo jak w przypadku szacowanego czasu dotarcia kierowcy na miejsce.

Aby przekazać użytkownikom aplikacji informacje o szacowanym czasie dotarcia na miejsce, wykonaj te czynności w iOS:

  1. Pobierz odcinki podróży za pomocą Navigator.getRouteSegments().
  2. Wywołaj GMSNavigator.timeToNextDestination dla każdego etapu podróży.
  3. Przekaż informacje o czasie do aplikacji klienckiej, tak jak w przypadku szacowanego czasu dotarcia kierowcy na miejsce.
Czy można użyć RoadSnappedLocationProvider, aby uzyskać bieżącą lokalizację kierowcy, jeśli nawigacja nie jest na pierwszym planie?

Tak. W Androidzie RoadSnappedLocationProvider domyślnie działa w tle.

Aby nawigacja działała w tle na iOS, zaimplementuj detektor dla GMSRoadSnappedLocationProviderListener i ustaw właściwość allowsBackgroundLocationUpdates na TRUE.

Czy pakiet Navigation SDK obsługuje geofencing?

Nie. W kontekście nawigacji remainingTimeOrdistanceChangeListener ma przewagę nad geofence. Geofence może nie uwzględniać geometrii drogi i nie być wyśrodkowany na dokładnym punkcie, do którego kierowca jedzie.

Możesz uzyskać podobną funkcjonalność, używając remainingTimeOrdistanceChangeListener.

  1. Ustaw próg, aby określić częstotliwość wywołań zwrotnych.
  2. Sprawdź pozostałą odległość do celu.

Jeśli na przykład ustawisz próg na 100 m, otrzymasz wywołanie zwrotne, gdy odległość do miejsca docelowego zmieni się o 100 m. W miarę zmniejszania się odległości możesz aktualizować ten próg do mniejszej wartości i otrzymywać częstsze wywołania zwrotne. Następnie sprawdź pozostałą odległość, aby określić, czy jesteś wystarczająco blisko miejsca odbioru lub zwrotu.

W iOS zaimplementuj detektor GMSNavigatorListener.didUpdateRemainingDistance, aby zarządzać odległością między powiadomieniami.

Czy mogę wyłączyć powiadomienia, gdy aplikacja Nawigacja działa w tle?

Tak. Na Androidzie do zarządzania powiadomieniami służy Navigator.setHeadsUpNotificationEnabled. Ta metoda ma argument logiczny. FALSE wyłącza powiadomienia, a TRUE je włącza.

W systemie iOS wyłącz powiadomienia w tle dotyczące lokalizacji przyciągniętych do drogi, ustawiając GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates na NO.

Aby wyłączyć przetwarzanie w tle w przypadku innych powiadomień o lokalizacji, wywołaj GMSNavigator.sendsBackgroundNotifications(NO).

Dostosowywanie interfejsu

Czy mogę oznaczyć najlepszą trasę kolorem?
Nie. Obecnie nie można oznaczać kolorami konkretnych opcji trasy.
Czy pakiet Navigation SDK może wyświetlać szacowany czas dotarcia do miejsca docelowego?

Tak. W Androidzie użyj tych metod:

  1. Pobierz czas i odległość dla wszystkich punktów pośrednich za pomocą Navigator.getTimeAndDistanceList().
  2. Ukryj szacowany czas dotarcia do bieżącego punktu orientacyjnego za pomocą NavigationFragment.setEtaCardEnabled(false).
  3. Wyświetlaj szacowany czas dotarcia na miejsce docelowe.

W iOS użyj tych opcji:

  1. Zadzwoń do firmy GMSNavigator.routeLegs(read).
  2. W ostatnim etapie wywołaj funkcję GMSNavigator.timeToNextDestination.
  3. Ukryj szacowany czas dotarcia do bieżącego punktu pośredniego, ustawiając MSMapView.settings.navigationFooterEnabled=NO na FALSE.
  4. Wyświetlaj szacowany czas dotarcia na miejsce docelowe.
Jak mogę ukryć aktualizacje szacowanego czasu dotarcia na miejsce?

Karty z szacowanym czasem dotarcia na miejsce możesz wyłączyć na te sposoby:

  • Na Androidzie użyj navigationView.setEtaCardEnabled(false).
  • W systemie iOS użyj GMSMapView.settings.navigationFooterEnabled=NO.
Jakie opcje dostosowywania interfejsu są dostępne w przypadku kart nagłówka i stopki?

W Androidzie do ustawiania koloru tła używasz StylingOptions. Aby ukryć lub wyświetlić nagłówek i stopkę, użyj funkcji składowych setHeaderEnabled i setFooterEnabled klasy NavigationFragment.

W iOS użyj GMSMapView.settings.navigationHeaderPrimaryBackgroundColor, aby ustawić styl koloru tła. Aby ukryć lub wyświetlić nagłówek i stopkę, użyj właściwości navigationFooterEnabled i navigationHeaderEnabled elementu GMSUISettings.

Routing

Czy mogę podać kierowcy konkretną trasę lub usunąć trasy alternatywne?
Nie. Domyślnie dostępnych jest kilka tras, a najszybsza ma priorytet. Możesz wpłynąć na domyślną trasę, dodając do żądania preferencje, takie jak „unikaj autostrad i opłat”. Dodanie punktów orientacyjnych również wpływa na trasę.
Czy mogę wyświetlić użytkownikowi aplikacji inną etykietę miejsca docelowego niż domyślna lokalizacja miejsca docelowego?

Tak. W Androidzie utwórz Marker z niestandardowym tytułem miejsca docelowego oraz szerokością i długością geograficzną. Pakiet Navigation SDK wyświetla niestandardowy tytuł i współrzędne na elemencie NavigationMap.

W iOS tworzysz i wyświetlasz GMSMarker dla miejsca docelowego.

Czy mogę używać pakietu Navigation SDK do śledzenia odchyleń od zdefiniowanej ścieżki?

Tak. W Androidzie użyj Navigator.setRouteChangedListener, aby otrzymywać powiadomienia o zmianie trasy lub zaleceniu nowej trasy:

  1. Zarejestruj detektor, który sprawdza pozycję urządzenia na trasie, używając metody Navigator.setRouteChangedListener.
  2. Dodaj kod do modułu obsługi zdarzeń wywołania zwrotnego onRouteChanged:
    • wysyłać do użytkownika aplikacji wiadomości z aktualnymi informacjami o szacowanym czasie dotarcia na miejsce i odległości.
    • śledzić lokalizację urządzenia;
    • [Opcjonalnie] Dodaj inne funkcje wymagane przez aplikację do obsługi sytuacji, gdy kierowca zboczy z wyznaczonej trasy.

W iOS użyj GMSNavigator i jego detektorów, aby otrzymywać powiadomienia o zmianie trasy lub zaleceniu nowej trasy:

  1. W kontrolerze widoku mapy zaimplementuj protokoły GMSNavigatorListener i GMSRoadSnappedLocationProviderListener.
  2. Zaimplementuj GMSNavigatorListener.navigatorDidChangeRoute.
  3. Uzyskaj dostęp do nowej trasy, korzystając z właściwości routeLegs i currentRouteLeg obiektu GMSNavigator.
Czy kierowca może wyjść z nawigacji bez ukończenia trasy?

Tak. W Androidzie wywołaj metodę Navigator.stopGuidance(), aby zatrzymać nawigację.

W iOS wywołaj funkcję GMSNavigator.clearDestinations.

Czy pakiet Navigation SDK obsługuje wyznaczanie tras i nawigację dla ciężarówek i dużych pojazdów?

Tak. Dzięki wyznaczaniu tras dla dużych pojazdów możesz przekazywać do pakietu Navigation SDK tokeny tras dla ciężarówek wygenerowane przez interfejs Routes API lub Route Optimization API. Pakiet SDK zapewnia szczegółowe wskazówki dojazdu z objaśnieniami trasy (wysokość, waga, materiały niebezpieczne i ograniczenia dotyczące ciężarówek) oraz zachowuje profil fizyczny pojazdu podczas dynamicznego wyznaczania trasy. Szczegółowe informacje znajdziesz w artykule Nawigacja po trasach dla dużych pojazdów.

Symulator

Czy symulator obsługuje zmiany trasy?

Tak. W Androidzie wywołaj simulateLocationsAlongNewRoute, aby zasymulować podróż, która obejmuje zmianę trasy. Metoda simulateLocationsAlongExistingRoute ignoruje zmiany w istniejącej trasie.

W iOS użyj GMSLocationSimulator.simulateAlongNewRouteToDestinations, aby zasymulować podróż, która obejmuje zmianę trasy. Jeśli nie przewidujesz żadnych zmian tras, możesz użyć GMSLocationSimulator.simulateLocationsAlongExistingRoute lub GMSLocationSimulator.simulateAlongNewRouteToDestinations.

Przepływy pracy

Jak odrzucić powiadomienie po zamknięciu aktywności zawierającej fragment nawigacji?

Powiadomienie o nawigacji pozostaje widoczne podczas nawigacji, gdy aktywność jest zamknięta. Gdy pojazd dotrze do celu, nawigacja się zatrzyma, a powiadomienie zniknie.

Aby obsługiwać kliknięcia powiadomienia, użyj Navigator.startGuidance(intent resumeIntent). Zdarzenie resume intent jest wywoływane, gdy użytkownik aplikacji kliknie powiadomienie. Zwykle Navigator.startguidance(getIntent()) jest wywoływany z głównego działania, które przywołuje działanie, gdy użytkownik aplikacji kliknie powiadomienie.

Usługi mobilne

Czym różni się korzystanie z pakietu Navigation SDK w przypadku klientów Mobility Services?

Usługi Google Maps Platform Mobility Services oferują zestaw interfejsów API i pakietów SDK, które pomagają zaspokajać potrzeby firm transportowych i logistycznych. W przypadku klientów korzystających z usług mobilności pakiet Navigation SDK jest zwykle używany w połączeniu z powiązanymi usługami do optymalizacji tras, wysyłania, elementu śledzenia zadań, analityki floty i innych celów. W przypadku klientów korzystających z usług mobilności pakiet Navigation SDK jest też rozliczany inaczej. Więcej informacji znajdziesz w dokumentacji usług mobilności.

Usługi związane z mobilnością są dostępne tylko dla wybranych klientów. Aby uzyskać więcej informacji, skontaktuj się z przedstawicielem handlowym.

Skąd mam wiedzieć, czy jestem klientem Mobility Services?
Jeśli nie masz pewności, czy wdrażasz pakiet Navigation SDK jako klient usług mobilności, poszukaj w kodzie wywołania ReportBillableEvent. Metodę ReportBillableEvent powinni wywoływać tylko klienci korzystający z usług mobilności.

Jak rozliczane jest korzystanie z pakietu Navigation SDK przez klientów Mobility Services?
W przypadku klientów korzystających z usług mobilności rozliczenia i ceny pakietu Navigation SDK zależą od umowy o świadczenie usług zawartej z Google Maps Platform. Informacje o tym, jak sprawdzić, czy implementacja usług mobilności jest prawidłowo rozliczana, znajdziesz w artykule Weryfikacja płatności. Aby uzyskać więcej informacji o rozliczeniach za usługi mobilności, skontaktuj się z przedstawicielem handlowym.

Które interfejsy API Navigation SDK powinny być używane tylko przez klientów Mobility Services?

W pakiecie Navigation SDK jest kilka interfejsów API, które są przeznaczone tylko dla klientów Mobility Services rozliczanych przez Google na podstawie transakcji. Jeśli nie jesteś klientem Mobility Services, te metody nie będą działać:

Jeśli jestem klientem Mobility Services, czy mogę też używać implementacji pakietu Navigation SDK, która nie jest związana z Mobility Services?

Tak, klienci korzystający z usług mobilnych mogą używać zarówno implementacji Navigation SDK w usługach mobilnych, jak i implementacji poza usługami mobilnymi. W aplikacji możesz jednak używać tylko jednego typu implementacji naraz. Musisz też utworzyć nowy projekt w chmurze Google Cloud, konto rozliczeniowe i klucz interfejsu API, które będą oddzielone od tych, których używasz w implementacji usług mobilności. Więcej informacji znajdziesz w omówieniu konfiguracji pakietu Navigation SDK.

Aby dowiedzieć się więcej o korzystaniu z pakietu Navigation SDK bez usług mobilności, w tym o migracji aplikacji z jednego typu implementacji na inny, skontaktuj się z opiekunem klienta w Google.

Uwaga: jeśli nie jesteś klientem Mobility Services i chcesz dowiedzieć się więcej o kolekcji interfejsów API i pakietów SDK Mobility Services, skontaktuj się z zespołem sprzedaży Google Maps Platform.