Najczęstsze pytania

Szczegóły usługi

Problemy

Sieć

Dane

Dostosowywanie interfejsu

Routing

Symulator

Przepływy pracy

Usługi mobilności

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 iOS wybierz 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 aplikacja LocationListener działa w tle. Aplikacja nadal przypina pozycję do drogi i utrzymuje kierunek.

W iOS, aby nadal otrzymywać aktualizacje lokalizacji pozycji i kierunku w tle, zastosuj funkcję przyciągania do drogi i ustaw wartość allowsBackgroundLocationUpdates na YES.

Tak. Gdy tworzysz lub zmieniasz trasę, usługa RouteChangeListener udostępnia linie wielokątne.

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

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

Widok GMSMapView się nie wczytuje.

Jeśli widok GMSMapView się nie wczytuje:

  • Sprawdź, czy pakiet SDK Nav jest włączony w konsoli Cloud.
  • 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łączeniem?
Pakiet SDK do nawigacji wstępnie przechowuje w pamięci podręcznej trasę dla każdej podróży. Informacje w pamięci podręcznej obejmują informacje o trasie na 15–20 minut oraz alternatywne trasy na wypadek, gdyby kierowca zboczył z trasy. Pakiet SDK nawigacji określa przybliżoną pozycję za pomocą GPS-a urządzenia i czujników.
Czy jest dostępny tryb offline?
Nie, pakiet SDK Nawigacji nie oferuje obecnie trybu offline. Pakiet SDK udostępnia jednak wcześniej zapisane w pamięci podręcznej informacje dotyczące trasy.

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 funkcję Navigator.getRouteSegments().

Na urządzeniu z iOS zadzwoń pod numer GMSNavigator.routeLegs(read).

Czy na początku trasy dostępne są wskazówki dojazdu zakręt po zakręcie?
Tak. Pakiet SDK nawigacji udostępnia listę segmentów trasy. Poza tym kierowca może przesuwać kartę z kierunkami 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, wykonaj te czynności na urządzeniu z Androidem:

  1. Pobierz czas i odległość dla wszystkich punktów drogi za pomocą funkcji Navigator.getTimeAndDistanceList().
  2. Prześlij te informacje do aplikacji klienta tak, jak to robisz obecnie w przypadku przewidywanego czasu przybycia kierowcy.

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

  1. Pobierz etapy podróży za pomocą Navigator.getRouteSegments().
  2. Zadzwoń pod numer GMSNavigator.timeToNextDestination po zakończeniu każdego etapu podróży.
  3. Przesyłaj informacje o czasie do aplikacji klienta tak, jak to robisz obecnie w przypadku przewidywanego czasu przybycia kierowcy.
Czy można użyć RoadSnappedLocationProvider do uzyskania 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 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 zmierza kierowca.

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 np. 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 urządzeniu z Androidem możesz zarządzać powiadomieniami, korzystając z funkcji Navigator.setHeadsUpNotificationEnabled. Ta metoda ma argument typu logicznego. FALSEwyłącza powiadomienia; TRUEwłącza powiadomienia.

W iOS wyłącz powiadomienia w tle dla lokalizacji na mapie, ustawiając opcję GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates na  NIE.

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

Personalizacja interfejsu

Czy mogę oznaczyć kolorem najlepszą opcję trasy?
Nie. Obecnie nie można nadać koloru 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. Użyj funkcji Navigator.getTimeAndDistanceList(), aby pobrać czas i odległość dla wszystkich punktów pośrednich.
  2. Ukryj ETA bieżącego punktu docelowego, używając NavigationFragment.setEtaCardEnabled(false).
  3. Wyświetlanie czasu dojazdu do miejsca docelowego.

W iOS użyj:

  1. Zadzwoń do firmy GMSNavigator.routeLegs(read).
  2. Na ostatnim odcinku zadzwoń do GMSNavigator.timeToNextDestination.
  3. Ustaw wartość MSMapView.settings.navigationFooterEnabled=NO na FALSE, aby ukryć szacowany czas dojazdu do bieżącego punktu kontrolnego.
  4. Wyświetlanie czasu dojazdu 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ć atrybutu StylingOptions, aby ustawić styl koloru tła. Aby ukryć lub wyświetlić nagłówek i stopkę, użyj funkcji członkowskich 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 obiektu GMSUISettings.

Routing

Czy mogę podać kierowcy konkretną trasę lub usunąć alternatywne trasy?
Nie. Domyślnie podawane są liczne trasy, a priorytet ma najszybsza z nich. Możesz wpływać na domyślną trasę, dodając do swojej prośby preferencje, takie jak „omijaj autostrady i drogi płatne”. Dodanie 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 docelowa?

Tak. Na urządzeniu z Androidem utwórz Marker z niestandardowym tytułem miejsca docelowego i współrzędnymi geograficznymi. 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 pozycję urządzenia na trasie, używając metody Navigator.setRouteChangedListener.
  2. Dodaj kod do modułu 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ę do obsługi sytuacji, gdy kierowca zjeżdża z przeznaczonej trasy.

W iOS użyj obiektu GMSNavigator i jego słuchaczy, aby otrzymywać powiadomienia o zmianie trasy lub rekomendacji nowej trasy:

  1. W kontrolerze widoku mapy zaimplementuj protokół GMSNavigatorListener oraz protokół GMSRoadSnappedLocationProviderListener.
  2. Wdróż GMSNavigatorListener.navigatorDidChangeRoute.
  3. Uzyskaj dostęp do nowej trasy, korzystając z właściwości routeLegscurrentRouteLeg usługi GMSNavigator.
Czy kierowca może zamknąć nawigację bez ukończenia trasy?

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

Na urządzeniu z iOS zadzwoń pod numer GMSNavigator.clearDestinations.

Symulator

Czy symulator obsługuje zmiany trasy?

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

Na iOS użyj GMSLocationSimulator.simulateAlongNewRouteToDestinations, aby symulować przejazd z zmianą trasy. Jeśli nie przewidujesz żadnych zmian trasy, możesz użyć GMSLocationSimulator.simulateLocationsAlongExistingRoute lub GMSLocationSimulator.simulateAlongNewRouteToDestinations.

Przepływy pracy

Jak zamknąć powiadomienie po zamknięciu aktywności, która zawiera 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 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 mobilności

Jakie różnice występują w korzystaniu z pakietu SDK do nawigacji w przypadku klientów 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 Mobility Services pakiet SDK Nawigacji jest zwykle używany w połączeniu z powiązanymi usługami do optymalizacji trasy, dysponowania, śledzenia zadań, analizy floty itp. Pakiet SDK do nawigacji jest też fakturowany 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 ds. sprzedaży.

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

Jak naliczane są opłaty za pakiet SDK Nawigacji w przypadku klientów Usług mobilnych?
W przypadku klientów korzystających z 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ą opłaty za wdrożenie Usług mobilnych, znajdziesz w sekcji Weryfikacja rozliczeń. Aby uzyskać więcej informacji o rozliczaniu usług mobilnych, skontaktuj się z przedstawicielem handlowym.

Których interfejsów API pakietu SDK nawigacji powinni używać tylko klienci Mobility Services?

W pakiecie SDK nawigacji jest kilka interfejsów API przeznaczonych tylko dla klientów Usług mobilnych, którzy są obciążani przez Google za każdą transakcję. Jeśli nie korzystasz z usług mobilnych, te metody nie będą działać:

Czy jako klient usług Mobility Services mogę korzystać z implementacji pakietu SDK nawigacji, która nie jest związana z usługami 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 będą odrębne od tych, których używasz w ramach implementacji usług mobilnych. Więcej informacji znajdziesz w omówieniu konfiguracji pakietu SDK na potrzeby nawigacji.

Więcej informacji o implementacji pakietu SDK nawigacji w innych usługach niż Mobilność, w tym o przenoszeniu aplikacji z jednego typu implementacji do innego, znajdziesz u swojego opiekuna klienta Google.

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