Najczęstsze pytania
Szczegóły usługi
- Jak należy wyświetlać powiadomienie o Warunkach korzystania z usługi Navigation SDK?
- Jakie języki obsługuje nawigacja głosowa?
- Czy kierunek jest utrzymywany, gdy kierowca opuszcza tryb nawigacji?
- Czy linie wielowymiarowe są dostępne podczas uruchamiania lub zmieniania trasy?
- Czy użytkownicy aplikacji muszą mieć zainstalowaną aplikację mobilną Mapy Google?
- Czy pakiet SDK Nawigacji może wskazywać parkingi w pobliżu restauracji i innych miejsc docelowych?
- Czy pakiet SDK nawigacji pokazuje kierunek ruchu na pasach podczas zbliżania się do punktu skrętu?
Problemy
- W Xcode 12 aplikacje nie są prawidłowo kompilowane na potrzeby symulatora. Jak rozwiązać ten problem?
GMSMapView
się nie wczytuje.
Sieć
Dane
- Czy przed rozpoczęciem trasy mogę pobrać wszystkie przystanki/miejsca docelowe podróży?
- Czy na początku trasy dostępne są szczegółowe wskazówki dojazdu?
- Jak szacowany czas dotarcia na miejsce jest przekazywany użytkownikom aplikacji?
- Czy usługa
RoadSnappedLocationProvider
może być używana do uzyskiwania bieżącej lokalizacji kierowcy, jeśli nawigacja nie jest na pierwszym planie? - Czy pakiet SDK do nawigacji obsługuje geofencing?
- Czy mogę wyłączyć powiadomienia, gdy aplikacja Nawigacja działa w tle?
Dostosowywanie interfejsu
- Czy mogę oznaczyć kolorem najlepszą opcję trasy?
- Czy pakiet SDK do nawigacji może wyświetlać szacowany czas dotarcia do miejsca docelowego?
- Jak ukryć informacje o przewidywanym czasie dotarcia?
- Które opcje dostosowywania interfejsu są dostępne w przypadku kart nagłówka i stopki?
Routing
- Czy mogę podać kierowcy konkretną trasę lub usunąć trasy alternatywne?
- Czy mogę wyświetlić kierowcy inną etykietę miejsca docelowego niż domyślna lokalizacja docelowa?
- Czy mogę używać pakietu Navigation SDK do śledzenia odchyleń od zdefiniowanej ścieżki?
- Czy kierowca może zamknąć nawigację bez ukończenia trasy?
Symulator
Przepływy pracy
Usługi mobilne
- Czym różni się korzystanie z pakietu SDK do nawigacji w przypadku klientów usług mobilnościowych?
- Jak sprawdzić, czy jestem klientem Usług mobilnych?
- Jak naliczane są opłaty za pakiet SDK do nawigacji w przypadku klientów usług mobilnych?
- Których interfejsów API pakietu SDK nawigacji powinni używać tylko klienci Mobility Services?
- Czy jeśli jestem klientem Mobility Services, mogę też używać implementacji pakietu SDK Nawigacji, która nie pochodzi z Mobility Services?
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ądzeniu 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ę przyciągania do drogi i ustaw wartość
allowsBackgroundLocationUpdates
naYES
. -
Tak. Gdy trasa zostanie utworzona lub zmieniona, usługa
RouteChangeListener
udostępnia linie wielokątne. - Nie. Pakiet SDK Nawigacji nie wymaga instalowania aplikacji mobilnej Map Google na urządzeniu.
- 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
doExcluded Architectures
tylko w przypadku kompilacji „iOS Simulator”.Więcej informacji znajdziesz w tym poście na StackOverflow.
- Widok mapy GMS nie wczytuje się.
-
Jeśli widok GMSMapView się nie wczytuje:
- Sprawdź, czy pakiet SDK Nav 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. Navigation SDK 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 zarchiwizowane 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:
- Pobierz czas i odległość dla wszystkich punktów pośrednich, używając funkcji
Navigator.getTimeAndDistanceList()
. - 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:
- Pobierz etapy podróży za pomocą funkcji
Navigator.getRouteSegments()
. - Zadzwoń pod numer
GMSNavigator.timeToNextDestination
w przypadku każdego etapu podróży. - Przesyłaj informacje o czasie do aplikacji klienta tak, jak obecnie robisz to w przypadku przewidywanego czasu przybycia kierowcy.
- Pobierz czas i odległość dla wszystkich punktów pośrednich, używając funkcji
-
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
GMSRoadSnappedLocationProviderListener
i ustaw właściwośćallowsBackgroundLocationUpdates
naTRUE
. - 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
.- Ustaw próg, aby określić częstotliwość wywołań zwrotnych.
- Sprawdź pozostałą odległość do celu.
Jeśli na przykład ustawisz próg na 100 m, otrzymasz połączenie zwrotne, gdy odległość do celu 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 urządzeniu z Androidem możesz zarządzać powiadomieniami, korzystając z funkcji
Navigator.setHeadsUpNotificationEnabled
. Ta metoda ma argument logiczny.FALSE
wyłącza powiadomienia;TRUE
włącza powiadomienia.W iOS wyłącz powiadomienia w tle dla lokalizacji zarejestrowanych na drodze, ustawiając wartość parametru
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:
- Pobierz czas i odległość dla wszystkich punktów pośrednich, używając funkcji
Navigator.getTimeAndDistanceList()
. - Ukryj szacowany czas dotarcia do bieżącego punktu kontrolnego, używając opcji
NavigationFragment.setEtaCardEnabled(false)
. - Wyświetl szacowany czas dotarcia do miejsca docelowego.
W iOS:
- Zadzwoń do firmy
GMSNavigator.routeLegs(read)
. - Na ostatnim odcinku zadzwoń do
GMSNavigator.timeToNextDestination
. - Użyj wartości FALSE, aby ukryć szacowany czas dotarcia do bieżącego punktu kontrolnego.
MSMapView.settings.navigationFooterEnabled=NO
- Wyświetl szacowany czas dotarcia do miejsca docelowego.
- Pobierz czas i odległość dla wszystkich punktów pośrednich, używając funkcji
- 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
.
- Na Androidzie użyj
-
Na Androidzie możesz użyć
StylingOptions
, aby ustawić kolor tła. Aby ukryć lub wyświetlić nagłówek i stopkę, użyj funkcji członkowskichsetHeaderEnabled
isetFooterEnabled
obiektuNavigationFragment
.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ścinavigationFooterEnabled
inavigationHeaderEnabled
elementuGMSUISettings
.
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 domyślną trasę, 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 naNavigationMap
.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:- Zarejestruj listenera, który sprawdza położenie urządzenia na trasie, używając metody
Navigator.setRouteChangedListener
. - 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:- W kontrolerze widoku mapy zastosuj protokół
GMSNavigatorListener
oraz protokółGMSRoadSnappedLocationProviderListener
. - Wdróż
GMSNavigatorListener.navigatorDidChangeRoute
. - Uzyskaj dostęp do nowej trasy, używając właściwości
routeLegs
icurrentRouteLeg
obiektuGMSNavigator
.
- Zarejestruj listenera, który sprawdza położenie urządzenia na trasie, używając metody
-
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. MetodasimulateLocationsAlongExistingRoute
ignoruje 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
lubGMSLocationSimulator.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)
. Aktywuje się, gdy użytkownik aplikacji kliknie powiadomienie.resume intent
Zazwyczaj funkcjaNavigator.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
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 mobilności. 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.
ReportBillableEvent
. Metodę ReportBillableEvent
powinni stosować tylko klienci Mobility Services.
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:
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 mobilnych. 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 do innego, 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.