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 zawierać okno z powiadomieniem o Warunkach korzystania z usługi pakietu SDK nawigacji, które musi zaakceptować każdy kierowca. To okno dialogowe umożliwia kierowcy zaakceptowanie Warunków korzystania z usługi. Pakiet SDK do nawigacji zawiera plik tekstowy z warunkami.
Na urządzeniach z Androidem użyj metody NavigationApi.showTermsAndConditionsDialog, aby wyświetlić okno z warunkami.
Na urządzeniu z iOS wykonaj połączenie GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName.
Wszystkie języki obsługiwane przez Google Maps Mobile są automatycznie dostępne w przypadku pakietu SDK do nawigacji. Urządzenie ma domyślny język systemowy, którego aplikacja nie może zmienić. Aplikacja ma jednak dostęp do ponad 70 języków.

Tak. Na Androidzie po uruchomieniu LocationListener nadal działa w tle. Aplikacja nadal przypina pozycję do drogi i utrzymuje kierunek.

W iOS, aby nadal otrzymywać aktualizacje położenia i kierunku w tle, zastosuj funkcję dopasowywania do drogi i ustaw wartość allowsBackgroundLocationUpdates na YES.

Tak. Gdy trasa zostanie utworzona lub zmieniona, usługa RouteChangeListener udostępnia linie wielokątne.

Nie. Pakiet SDK Nawigacji nie wymaga instalowania na urządzeniu mobilnej wersji Map Google.
Nie, w tej chwili pakiet SDK Nawigacji nie obsługuje 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 Architecturestylko w przypadku kompilacji „iOS Simulator”.

Więcej informacji znajdziesz w tym poście na StackOverflow.

Widok GMSMapView się nie wczytuje.

Jeśli widok GMSMapView się nie wczytuje:

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

Sieć

Jak pakiet SDK do nawigacji radzi sobie z problemami z połączeniami?
Pakiet SDK do nawigacji wstępnie przechowuje w pamięci podręcznej trasę dla każdej podróży. Informacje w cache obejmują informacje o trasie na 15–20 minut oraz alternatywne trasy na wypadek, gdyby kierowca zboczył z trasy. SDK nawigacji określa przybliżoną pozycję za pomocą GPS-u i czujników urządzenia.
Czy jest dostępny tryb offline?
Nie, pakiet SDK Nawigacji nie oferuje obecnie trybu offline. Pakiet SDK udostępnia jednak wstępnie zapisane informacje dotyczące trasy.

Dane

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

Tak. Aby uzyskać wskazówki dojazdu na urządzeniu z Androidem, wybierz Navigator.getRouteSegments().

Na iOS wybierz funkcję GMSNavigator.routeLegs(read).

Czy na początku trasy dostępne są szczegółowe wskazówki dojazdu?
Tak. Pakiet SDK nawigacji udostępnia listę segmentów trasy. Poza tym kierowca może przesuwać kartę wskazówek w nagłówku, aby zobaczyć każdy manewr.
Jak użytkownicy aplikacji są informowani o przewidywanym czasie dotarcia?

Aby udostępnić użytkownikom aplikacji informacje o przewidywanym czasie dotarcia na urządzeniu z Androidem:

  1. Pobierz czas i odległość dla wszystkich punktów pośrednich, używając funkcji Navigator.getTimeAndDistanceList().
  2. Przekaż te informacje do aplikacji klienckiej tak, jak obecnie robisz to w przypadku szacowanego czasu dotarcia kierowcy na miejsce.

Aby udostępnić użytkownikom aplikacji informacje o przewidywanym czasie dotarcia, wykonaj te czynności na iOS:

  1. Pobierz etapy podróży za pomocą funkcji Navigator.getRouteSegments().
  2. Zadzwoń pod numer GMSNavigator.timeToNextDestination w przypadku każdego etapu podróży.
  3. Przesyłaj informacje o czasie do aplikacji klienta tak, jak obecnie robisz to w przypadku przewidywanego czasu przybycia kierowcy.
Czy RoadSnappedLocationProvider może być używany do uzyskiwania bieżącej lokalizacji kierowcy, jeśli nawigacja nie jest na pierwszym planie?

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

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

Czy pakiet SDK do nawigacji obsługuje geofencing?

Nie. W kontekście nawigacji remainingTimeOrdistanceChangeListener ma przewagę nad prostym geofencem. Geofence może nie uwzględniać geometrii drogi i być nieskierowany na punkt, do którego kierowca się udaje.

Możesz z niej korzystać za pomocą funkcji remainingTimeOrdistanceChangeListener.

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

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

W iOS zaimplementuj listenera GMSNavigatorListener.didUpdateRemainingDistance, aby zarządzać odstępem między powiadomieniami.

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

Tak. Na Androidzie możesz użyć opcji Navigator.setHeadsUpNotificationEnabled, aby zarządzać powiadomieniami. Ta metoda ma argument logiczny. FALSEwyłącza powiadomienia; TRUEwłącza powiadomienia.

W iOS wyłącz powiadomienia w tle dla lokalizacji zarejestrowanych na drodze, ustawiając wartość GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates na NIE.

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

Dostosowywanie interfejsu

Czy mogę oznaczyć kolorem najlepszą opcję trasy?
Nie. Obecnie nie można przypisać koloru do konkretnej opcji trasy.
Czy pakiet SDK do nawigacji może wyświetlać szacowany czas dotarcia do miejsca docelowego?

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

  1. Pobierz czas i odległość dla wszystkich punktów pośrednich, używając funkcji Navigator.getTimeAndDistanceList().
  2. Ukryj szacowany czas dotarcia do bieżącego punktu kontrolnego, używając opcji NavigationFragment.setEtaCardEnabled(false).
  3. Wyświetl szacowany czas dotarcia do miejsca docelowego.

W iOS użyj tych opcji:

  1. Zadzwoń do firmy GMSNavigator.routeLegs(read).
  2. Na ostatnim odcinku zadzwoń do GMSNavigator.timeToNextDestination.
  3. Ukryj szacowany czas dotarcia do bieżącego punktu kontrolnego, ustawiając parametr MSMapView.settings.navigationFooterEnabled=NO na wartość FAŁSZ.
  4. Wyświetl szacowany czas dotarcia do miejsca docelowego.
Jak mogę ukryć aktualizacje szacowanego czasu dotarcia?

Możesz wyłączyć karty ETA za pomocą tych metod:

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

Na Androidzie możesz użyć StylingOptions, aby ustawić styl koloru tła. Aby ukryć lub wyświetlić nagłówek i stopkę, użyj funkcji członkowskich setHeaderEnabledsetFooterEnabled obiektu NavigationFragment.

W iOS użyj opcji 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ąć alternatywne trasy?
Nie. Domyślnie podawane są liczne trasy, a najszybsza z nich ma najwyższy priorytet. Możesz wpływać na trasę domyślną, dodając do swojego żądania preferencje, takie jak „unikaj autostrad i dróg płatnych”. Dodawanie punktów pośrednich również wpływa na trasę.
Czy mogę wyświetlić użytkownikowi aplikacji inną etykietę miejsca docelowego niż domyślna lokalizacja miejsca docelowego?

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

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

Czy mogę używać pakietu SDK do nawigacji, aby śledzić odstępstwa od zdefiniowanej ścieżki?

Tak. Na Androidzie Navigator.setRouteChangedListener, aby otrzymywać powiadomienia o zmianie trasy lub rekomendacji nowej trasy:

  1. Zarejestruj listenera, który sprawdza położenie urządzenia na trasie, używając metody Navigator.setRouteChangedListener.
  2. Dodaj kod do funkcji obsługi wywołania zwrotnego onRouteChanged:
    • Wyślij wiadomość do użytkownika aplikacji z aktualnym szacowanym czasem dotarcia i informacjami o odległości.
    • śledzić lokalizację urządzenia;
    • [Opcjonalnie] Dodaj inne funkcje wymagane przez aplikację, aby obsłużyć sytuację, gdy kierowca zjeżdża z przeznaczonej trasy.

Na iOS użyj funkcji GMSNavigator i jej słuchaczy, aby otrzymywać powiadomienia o zmianie trasy lub rekomendacji nowej trasy:

  1. W kontrolerze widoku mapy zastosuj protokół GMSNavigatorListener oraz protokół GMSRoadSnappedLocationProviderListener.
  2. Wdróż GMSNavigatorListener.navigatorDidChangeRoute.
  3. Uzyskaj dostęp do nowej trasy, używając właściwości routeLegs i currentRouteLeg obiektu GMSNavigator.
Czy kierowca może zamknąć nawigację bez ukończenia trasy?

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

Na iOS wybierz funkcję GMSNavigator.clearDestinations.

Symulator

Czy symulator obsługuje zmiany trasy?

Tak. Na Androidzie wywołaj funkcję simulateLocationsAlongNewRoute, aby symulować podróż z zaplanowaną zmianą trasy. Metoda simulateLocationsAlongExistingRouteignoruje zmiany w dotychczasowej trasie.

Na iOS użyj GMSLocationSimulator.simulateAlongNewRouteToDestinations, aby symulować podróż z 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 nawigacji pozostaje widoczne podczas nawigacji, gdy aktywność jest zamknięta. Gdy pojazd dotrze do miejsca docelowego, nawigacja się zatrzyma, a powiadomienie zniknie.

Aby obsłużyć kliknięcia powiadomienia, użyj elementu Navigator.startGuidance(intent resumeIntent). Gdy użytkownik aplikacji kliknie powiadomienie, zostanie wywołane zdarzenie resume intent. Zazwyczaj metoda Navigator.startguidance(getIntent()) jest wywoływana z głównej metody Activity, która wywołuje metodę Activity, gdy użytkownik aplikacji kliknie powiadomienie.

Usługi mobilne

Czym różni się korzystanie z pakietu SDK do nawigacji w przypadku klientów korzystających z Usług mobilnych?

Usługi mobilności Google Maps Platform to zbiór interfejsów API i pakietów SDK, które pomagają spełniać potrzeby firm transportowych i logistycznych. W przypadku klientów korzystających z usług mobilności pakiet SDK nawigacji jest zwykle używany w połączeniu z powiązanymi usługami do optymalizacji tras, dysponowania, śledzenia zadań, analizy floty itp. Pakiet SDK do nawigacji jest też obliczany inaczej w przypadku klientów usług mobilnych. Więcej informacji znajdziesz w dokumentacji Usług mobilnych.

Produkty mobilne są obecnie dostępne tylko dla wybranych klientów. Aby uzyskać więcej informacji, skontaktuj się z przedstawicielem handlowym.

Jak mogę sprawdzić, czy jestem klientem Mobility Services?
Jeśli nie masz pewności, czy jako klient usług mobilnościowych implementujesz obecnie pakiet SDK nawigacji, poszukaj w kodzie wywołania ReportBillableEvent. Metodę ReportBillableEvent powinni stosować tylko klienci Mobility Services.

Jak rozliczany jest pakiet SDK do nawigacji w przypadku klientów usług mobilności?
W przypadku klientów Usług mobilnych rozliczenia i ceny pakietu SDK nawigacji zależą od umowy o świadczenie usług zawartej z Google Maps Platform. Informacje o tym, jak sprawdzić, czy prawidłowe są rozliczenia za wdrożenie Usług mobilnych, znajdziesz w artykule 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 SDK nawigacji powinni używać tylko klienci usług mobilności?

W pakiecie Navigation SDK jest kilka interfejsów API przeznaczonych tylko dla klientów Mobility Services, którzy są obciążani przez Google za każdą transakcję. Jeśli nie jesteś klientem Usług mobilnych, te metody nie są dostępne:

Czy jeśli jestem klientem Mobility Services, mogę też używać pakietu SDK Nawigacji w innej implementacji niż Mobility Services?

Tak. Klienci Usług mobilnych mogą korzystać z implementacji pakietu SDK Nawigacji zarówno w Usługach mobilnych, jak i poza nimi. W aplikacji możesz jednak używać tylko jednego typu implementacji naraz. Musisz też utworzyć nowy projekt Google Cloud, konto rozliczeniowe i klucz API, które nie są używane w ramach implementacji usług mobilności. Więcej informacji znajdziesz w omówieniu konfiguracji pakietu SDK nawigacji.

Aby dowiedzieć się więcej o implementacji pakietu SDK nawigacji w innych usługach niż Mobilność, w tym o przenoszeniu aplikacji z jednego typu implementacji na inny, skontaktuj się z przedstawicielem, który zajmuje się Twoim kontem Google.

Uwaga: jeśli nie jesteś jeszcze klientem Mobility Services i chcesz dowiedzieć się więcej o interfejsach API i pakietach SDK Mobility Services, skontaktuj się z działem sprzedaży Google Maps Platform.