Niestandardowa nawigacja
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Pakiet Navigation SDK udostępnia różne sposoby integrowania nawigacji z aplikacją. Na tej stronie wyjaśniamy, czym jest niestandardowa nawigacja i jak różni się od innych rodzajów nawigacji dostępnych w pakiecie Navigation SDK.
Co to jest niestandardowa nawigacja?
Głównym sposobem implementacji pakietu Navigation SDK jest korzystanie z nawigacji Google, która umożliwia osadzanie nawigacji zakręt po zakręcie korzystającej z elementów interfejsu i wizualizacji dostarczonych przez Google – podobnie jak w aplikacjach Mapy Google. Jeśli potrzebujesz większej elastyczności niż ta, którą zapewnia nawigacja Google, możesz wdrożyć niestandardową nawigację.
Niestandardowe korzystanie z nawigacji może polegać na całkowitym wyeliminowaniu wskazówek dotyczących skręcania i uruchamianiu nawigacji tylko w tle lub na wyświetlaniu bardzo spersonalizowanych wskazówek na ekranie innym niż urządzenie, na którym działa nawigacja. W przypadku niestandardowej nawigacji aplikacja wywołuje pakiet SDK nawigacji, aby poprosić o informacje o nawigacji krok po kroku, a następnie udostępnia i zarządza elementami interfejsu i wizualizacjami, które użytkownik widzi podczas korzystania z nawigacji. Korzystanie z nawigacji Google jest zwykle łatwiejsze do wdrożenia, ale tworzenie własnej nawigacji niestandardowej daje większe możliwości personalizacji.
Gdy tworzysz niestandardowe środowisko nawigacji, Twoja aplikacja wywołuje pakiet Navigation SDK, aby rozpocząć, uruchomić i zatrzymać nawigację, korzystając z tego procesu:
Rozpocznij nawigację. Podobnie jak w przypadku nawigacji Google, niestandardowe korzystanie z nawigacji nadal wymaga utworzenia instancji nawigacji i ustawienia miejsca docelowego. W przypadku dostosowanej nawigacji możesz to osiągnąć, najpierw tworząc sesję nawigacji za pomocą GMSNavigationService.createNavigationSession
, czyli obiektu bez interfejsu, który przechowuje stan i może działać z kontrolerem widoku lub bez niego.
Więcej informacji znajdziesz w artykule Włączanie danych nawigacji krok po kroku.
Zobacz wersję demonstracyjną: pakiet Navigation SDK zawiera wersję demonstracyjną, którą możesz uruchomić, aby zobaczyć przykład nawigacji, która przełącza się między szczegółowymi wskazówkami dojazdu w standardowej nawigacji a nawigacją pokazującą tylko lokalizację urządzenia poruszającego się po polilinii drogi.
Aktywna nawigacja Oto kolejna kluczowa różnica między nawigacją dostarczaną przez Google a nawigacją niestandardową.
Zamiast przekazywać wskazówki do wbudowanego menedżera zdarzeń pakietu SDK nawigacji, włączasz kanał wskazówek krok po kroku i wdrażasz moduły obsługi zdarzeń. Dzięki temu Twoja aplikacja będzie mogła reagować na zdarzenia opisane w sekcji Nasłuchiwanie zdarzeń nawigacji.
Zakończ nawigację. Podobnie jak w przypadku nawigacji Google, nawigacja niestandardowa również wymaga zakończenia nawigacji w sposób najlepiej dopasowany do działania aplikacji.
Kiedy warto skorzystać z niestandardowej nawigacji?
W tabeli poniżej opisujemy niektóre scenariusze nawigacji niestandardowej.
Przykład |
Najważniejsze kroki |
W przypadku małych urządzeń, takich jak pojazdy dwukołowe, musisz podać wskazówki dla kierowcy w formie tekstowej. |
Utwórz nawigatora i skonfiguruj szczegółowe wskazówki jako plik danych na małym ekranie, podczas gdy nawigator będzie działać na telefonie komórkowym kierowcy poza jego bezpośrednim polem widzenia. |
Chcesz udostępnić aplikację jako usługę samochodową dla kierowców korzystających z Androida Auto. |
- Skonfiguruj usługę samochodową.
- Skonfiguruj projekt Navigation SDK.
- Ustal nawigatora, jeśli jeszcze go nie masz.
- Włącz kanał wskazówek dojazdu.
- Narysuj mapę na powierzchni aplikacji samochodowej i wypełnij pola danymi z skonfigurowanego pliku danych.
Więcej informacji znajdziesz w artykule Włączanie nawigacji w Androidzie Auto. |
Kierowcy korzystający z Twojej aplikacji chcą mieć mapę z podglądem trasy przez większość podróży, a tylko w przypadku ulic w mieście potrzebują szczegółowych wskazówek dojazdu. |
Aplikacja powinna umożliwiać kierowcom wchodzenie do nawigacji Google i wychodzenie z niej w dowolnym momencie bez zmiany ustawień nawigatora dotyczących miejsca docelowego i trybu podróży. |
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-08-31 UTC.
[null,null,["Ostatnia aktualizacja: 2025-08-31 UTC."],[[["\u003cp\u003eThe Navigation SDK offers both a pre-built Google navigation experience and the flexibility to create custom navigation experiences.\u003c/p\u003e\n"],["\u003cp\u003eCustom navigation experiences allow developers to manage UI elements, visuals, and event handling for a highly tailored user interface.\u003c/p\u003e\n"],["\u003cp\u003eThis customization ranges from background navigation to projecting guidance onto separate screens, giving developers more control.\u003c/p\u003e\n"],["\u003cp\u003eCustom experiences involve starting navigation, managing active navigation with event handlers, and ending navigation as needed.\u003c/p\u003e\n"],["\u003cp\u003eUse cases for custom navigation include text-only guidance, Android Auto integration, and dynamic switching between map views and turn-by-turn instructions.\u003c/p\u003e\n"]]],[],null,["# Custom navigation experience\n\nThe Navigation SDK provides different ways to integrate a navigation\nexperience into your app. This page explains what a custom navigation experience\nis and how it differs from other navigation experiences that are available in\nthe Navigation SDK.\n\nWhat is a custom navigation experience?\n---------------------------------------\n\nThe primary way to implement the Navigation SDK is to use the [Google\nnavigation\nexperience](/maps/documentation/navigation/android-sdk/intro-google-nav),\nwhich lets you embed a turn-by-turn navigation experience that uses\nGoogle-provided UI elements and visuals --- similar to the navigation experience\nwithin the Google Maps apps. If you need more flexibility than the Google\nnavigation experience offers, you can implement a custom navigation experience.\nA custom navigation experience refers to anything from eliminating turn guidance\nentirely with and running navigation only as a background process, to projecting\na highly customized guidance experience to a screen separate from the device\nthat runs the navigation. With a custom navigation experience, your app calls\nthe Navigation SDK to request a turn-by-turn navigation feed, and then\nyou provide and manage the UI elements and visuals that the user sees in the\nnavigation experience. While using the Google navigation experience is generally\neasier to implement, building your own custom navigation experience allows for\nmore customization.\n\nWhen you create a custom navigation experience, your app calls the Navigation\nSDK to start, run, and stop navigation, using the following flow:\n\n1. **Start navigation** . As with the Google navigation experience, a custom\n navigation experience still involves creating a navigation instance and\n setting the destination. However, with a customized navigation experience,\n you achieve this by first establishing a navigation session using\n `GMSNavigationService.createNavigationSession`, which is a state-bearing\n non-UI object that can operate either with a view controller, or without\n one.\n\n For more information, see [Enable turn-by-turn data\n feed](/maps/documentation/navigation/android-sdk/tbt-feed).\n\n **See the demo:** The download of the Navigation SDK contains a demo\n you can run to see an example of a navigation experience that switches\n between turn-by-turn guidance through standard navigation to a navigation\n experience that shows only the device location moving along a road\n polyline.\n2. **Active navigation** . Here is another key difference between a\n Google-provided navigation experience and a custom navigation experience.\n Instead of handing off guidance to the built-in event manager of the\n Navigation SDK, you enable the turn-by-turn feed and implement event\n handlers. This allows your experience to respond to the events described in\n [Listen for navigation\n events](/maps/documentation/navigation/android-sdk/events).\n\n3. **End navigation**. As with the Google navigation experience, custom\n navigation also requires you to terminate navigation in the manner best\n suited for the app's experience.\n\nWhen might you use a custom navigation experience?\n--------------------------------------------------\n\nThe following table describes some custom navigation scenarios.\n\n| **Example scenario** | **High-level steps** |\n|----------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| You need to provide text-only driver guidance for small devices such as 2-wheeled vehicles. | Create your navigator and set up the turn-by-turn guidance as a data feed to a small screen device while the navigator runs on the driver's mobile phone outside of their immediate view. |\n| You want to make your app available as a car service for drivers who use Android Auto. | 1. Set up the car service. 2. Set up your Navigation SDK project. 3. Establish a navigator if you haven't already. 4. Enable the turn-by-turn guidance feed. 5. Draw the map on the auto app surface and populate the fields from the data feed you configured. For more information, see [Enable Navigation for Android Auto](/maps/documentation/navigation/android-sdk/android-auto) |\n| Drivers using your app want an overview map for most of their journey, with only minimal turn-by-turn guidance for city streets. | Your app should allow drivers to enter and exit the Google navigation experience as they need, without alternating the navigator's settings for destination and trip mode. |"]]