Najczęstsze pytania

Szczegóły usługi

Problemy

Sieć

Dane

Dostosowywanie interfejsu

Routing

Symulator

Przepływy pracy

Usługi mobilne

Szczegóły usługi

W aplikacji musi być zaimplementowane okno z informacją o Warunkach 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 dostarczany z pakietem Navigation SDK.
Na Androidzie użyj metody NavigationApi.showTermsAndConditionsDialog, aby wyświetlić okno z warunkami.
W iOS zadzwoń GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName.
Wszystkie języki obsługiwane przez Mapy Google na urządzenia mobilne są automatycznie dostępne w pakiecie SDK do nawigacji. 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 nadal działa w tle. Aplikacja nadal będzie przyciągać pozycję do drogi i utrzymywać kierunek.

Aby nadal otrzymywać aktualizacje lokalizacji dotyczące pozycji i kierunku w tle w iOS, zaimplementuj przyciąganie do drogi i ustaw wartość allowsBackgroundLocationUpdates na YES.

Tak. Gdy trasa zostanie utworzona lub zmieniona, interfejs RouteChangeListener udostępnia polilinie.

Nie, pakiet Navigation SDK nie wymaga zainstalowania na urządzeniu aplikacji Mapy Google na urządzenia mobilne.
Nie, 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 się nie wczytuje.

Jeśli GMSMapView się nie wczytuje:

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

Sieć

Jak pakiet Navigation SDK radzi sobie ze słabym połączeniem?
Pakiet SDK do nawigacji wstępnie zapisuje w pamięci podręcznej trasę każdej podróży. Wstępnie zapisane informacje obejmują dane dotyczące trasy 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 i czujników urządzenia.
Czy jest dostępny tryb offline?
Nie, pakiet Navigation SDK nie oferuje obecnie trybu offline. Zapewnia jednak wstępnie zapisane w pamięci podręcznej informacje o podróży.

Dane

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

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

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

Czy szczegółowe wskazówki dojazdu są dostępne na początku trasy?
Tak. 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 jest przekazywany użytkownikom aplikacji?

Aby przekazywać użytkownikom aplikacji informacje o szacowanym czasie dotarcia na urządzeniach z Androidem:

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

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

  1. Pobierz etapy podróży za pomocą funkcji Navigator.getRouteSegments().
  2. Zadzwoń pod numer GMSNavigator.timeToNextDestination na każdym etapie podróży.
  3. Przekaż informacje o czasie do aplikacji klienta, tak jak w przypadku szacowanego czasu przyjazdu kierowcy.
Czy za pomocą RoadSnappedLocationProvider można uzyskać aktualną przyciągniętą lokalizację kierowcy, jeśli nawigacja nie jest na pierwszym planie?

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

Aby w iOS nawigacja działała w tle, zaimplementuj odbiornik 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 geofencingiem. Geofence może nie uwzględniać geometrii drogi i może nie być wyśrodkowany w dokładnym punkcie, do którego kierowca nawiguje.

Możesz przybliżyć tę funkcję za pomocą 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, wywołanie zwrotne nastąpi, gdy odległość od miejsca docelowego zmieni się o 100 m. W miarę zmniejszania się odległości możesz zmniejszać ten próg, aby częściej otrzymywać wywołania zwrotne. Następnie sprawdź pozostałą odległość, aby określić, czy jesteś wystarczająco blisko miejsca odbioru lub dostawy.

W przypadku iOS zaimplementuj odbiornik 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 używaj Navigator.setHeadsUpNotificationEnabled, aby zarządzać powiadomieniami. Ta metoda ma argument logiczny. FALSE – wyłącza powiadomienia; TRUE – włącza powiadomienia.

W systemie iOS wyłącz powiadomienia w tle dotyczące lokalizacji przyciąganych do dróg, ustawiając wartość GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates na NO.

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

Dostosowywanie interfejsu

Czy mogę oznaczyć kolorami najlepszą opcję trasy?
Nie. Kodowanie kolorami konkretnej opcji trasy nie jest obecnie obsługiwane.
Czy pakiet Navigation SDK może wyświetlać szacowany czas dotarcia do miejsca docelowego?

Tak. Na urządzeniach z Androidem użyj tych metod:

  1. Pobierz czas i odległość dla wszystkich punktów pośrednich za pomocą funkcji Navigator.getTimeAndDistanceList().
  2. Ukryj szacowany czas dotarcia do bieżącego punktu trasy za pomocą ikonyNavigationFragment.setEtaCardEnabled(false).
  3. Wyświetl szacowany czas dotarcia do miejsca docelowego.

W iOS użyj tych ustawień:

  1. Zadzwoń do firmy GMSNavigator.routeLegs(read).
  2. Na ostatnim etapie wywołaj funkcję GMSNavigator.timeToNextDestination.
  3. Ukryj szacowany czas dotarcia do bieżącego punktu trasy, ustawiając wartość MSMapView.settings.navigationFooterEnabled=NO na FALSE.
  4. Wyświetl szacowany czas dotarcia do miejsca docelowego.
Jak ukryć aktualizacje szacowanego czasu przyjazdu?

Karty z szacowanym czasem przyjazdu możesz wyłączyć w ten sposób:

  • Na Androidzie użyj navigationView.setEtaCardEnabled(false).
  • Na urządzeniach z iOS używaj GMSMapView.settings.navigationFooterEnabled=NO.
Jakie zmiany interfejsu są dostępne w przypadku kart nagłówka i stopki?

W Androidzie używasz StylingOptions, aby ustawić styl koloru tła. Aby ukryć lub wyświetlić nagłówek i stopkę, użyj funkcji członkowskich setHeaderEnabled i setFooterEnabled elementu 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 navigationFooterEnablednavigationHeaderEnabled elementu GMSUISettings.

Routing

Czy mogę podać kierowcy konkretną trasę lub usunąć trasy alternatywne?
Nie. Domyślnie podawanych jest kilka tras, a najszybsza z nich ma priorytet. Na trasę domyślną możesz wpływać, dodając do żądania preferencje, np. „unikaj autostrad i dróg płatnych”. Dodanie punktów pośrednich również wpływa na trasę.
Czy mogę wyświetlać użytkownikowi aplikacji inną etykietę miejsca docelowego niż domyślna lokalizacja docelowa?

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

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

Czy mogę używać pakietu Navigation SDK do śledzenia odchyleń od wyznaczonej trasy?

Tak. Na urządzeniach z Androidem możesz włączyć Navigator.setRouteChangedListener, aby otrzymywać powiadomienia o zmianach trasy lub rekomendacjach nowych tras:

  1. Zarejestruj odbiornik, który sprawdza położenie urządzenia na trasie za pomocą metody Navigator.setRouteChangedListener.
  2. Dodaj kod do funkcji obsługi zdarzenia wywołania zwrotnego: onRouteChanged:
    • Wysyłanie do użytkownika aplikacji wiadomości z aktualnymi informacjami o szacowanym czasie dotarcia i odległości.
    • śledzić lokalizację urządzenia,
    • [opcjonalnie] Dodaj inne funkcje wymagane przez aplikację, aby obsługiwać sytuacje, gdy kierowca zjedzie z wyznaczonej trasy.

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

  1. W kontrolerze widoku mapy zaimplementuj protokoły GMSNavigatorListenerGMSRoadSnappedLocationProviderListener.
  2. Wdrożenie GMSNavigatorListener.navigatorDidChangeRoute
  3. Dostęp do nowej trasy uzyskasz za pomocą właściwości routeLegscurrentRouteLeg obiektu GMSNavigator.
Czy kierowca może wyłączyć nawigację bez ukończenia trasy?

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

W systemie iOS wywołaj funkcję GMSNavigator.clearDestinations.

Symulator

Czy symulator obsługuje zmiany trasy?

Tak. Na Androidzie wywołaj simulateLocationsAlongNewRoute, aby zasymulować podróż ze zmianą trasy. Metoda simulateLocationsAlongExistingRoute ignoruje zmiany w dotychczasowej trasie.

W systemie iOS użyj GMSLocationSimulator.simulateAlongNewRouteToDestinations , aby zasymulować podróż, która obejmuje zmianę trasy. Jeśli nie przewidujesz żadnych zmian trasy, 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 zostanie zatrzymana, a powiadomienie zniknie.

Aby obsługiwać kliknięcia powiadomienia, użyj Navigator.startGuidance(intent resumeIntent). resume intent jest uruchamiane, gdy użytkownik aplikacji kliknie powiadomienie. Zazwyczaj funkcja Navigator.startguidance(getIntent()) jest wywoływana z głównego działania, które jest ponownie wywoływane, gdy użytkownik aplikacji kliknie powiadomienie.

Usługi mobilne

Czym różni się korzystanie z pakietu Navigation SDK w przypadku klientów korzystających z usług mobilności?

Usługi mobilne Google Maps Platform to zbiór interfejsów API i pakietów SDK, które pomagają zaspokajać potrzeby firm transportowych i logistycznych. Klienci korzystający z usług mobilnych używają zwykle pakietu Navigation SDK w połączeniu z powiązanymi usługami do optymalizacji tras, wysyłania zleceń, śledzenia zadań, analizowania floty i innych celów. W przypadku klientów korzystających z usług mobilności pakiet SDK do nawigacji jest też rozliczany inaczej. Więcej informacji znajdziesz w dokumentacji usług mobilnych.

Usługi 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 usług mobilnych?
Jeśli nie masz pewności, czy implementujesz Navigation SDK jako klient usług mobilności, poszukaj w kodzie wywołania ReportBillableEvent. Tylko klienci korzystający z usług mobilnych powinni dzwonić za pomocą ReportBillableEvent.

Jak rozliczany jest pakiet Navigation SDK w przypadku klientów korzystających z usług mobilności?
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 za wdrożenie usług mobilnych naliczane są prawidłowe opłaty, znajdziesz w sekcji Weryfikacja rozliczeń. Aby uzyskać więcej informacji o płatnościach za usługi mobilne, skontaktuj się z przedstawicielem handlowym.

Których interfejsów API pakietu Navigation SDK powinni używać tylko klienci usług mobilności?

W pakiecie Navigation SDK jest kilka interfejsów API, które są przeznaczone wyłącznie dla klientów usług mobilności, którzy są rozliczani przez Google za każdą transakcję. Jeśli nie jesteś klientem usług mobilnych, te metody nie działają:

Czy jako klient usług mobilności mogę też używać implementacji pakietu Navigation SDK, która nie jest związana z usługami mobilności?

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

Aby dowiedzieć się więcej o korzystaniu z implementacji pakietu Navigation SDK innej niż Usługi mobilne, w tym o migrowaniu aplikacji z jednego typu implementacji na inny, skontaktuj się z przedstawicielem, który zajmuje się Twoim kontem Google.

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