Adım adım veri feed'i, harita tabanlı navigasyon yardımı için tasarlanmamış cihazlara yalnızca navigasyon bilgileri sağlar. Aşağıdaki öğeleri kullanarak yaklaşan manevraları gösterir:
- simgeleri (sol, sağ, U dönüşü)
- döner kavşaklarda dönüş numaraları
- yol adları
- bir sonraki navigasyon adımına veya nihai hedefe tahmini mesafe ve süre
Adım adım feed'i kullanarak, Navigation SDK kullanıcı arayüzünün tamamının uygun olmadığı (ör. küçük ekranlar) deneyimler oluşturabilirsiniz. Örneğin, iki tekerlekli araç sürücüleri için bu özelliği kullanabilirsiniz. Bu sayede, sürücülerin dikkatlerini dağıtmadan, gidecekleri yere daha hızlı ve güvenli bir şekilde ulaşmalarına yardımcı olmak için yalnızca navigasyon rehberliğini yansıtabilirsiniz.
Temel navigasyon ekranı öğeleri
Her navigasyon adımının birincil alanları, tam yol adı, manevra ve adımın toplam mesafesidir. Bunlar GMSNavigationStepInfo içinde mevcuttur.
Gezi genelinde, mevcut adıma veya hedefe kalan süreyi ve mesafeyi göstermek isteyebilirsiniz. Bunların tümü GMSNavigationNavInfo içinde mevcuttur.
Sağdaki resimde bu temel gezinme öğelerinin bir örneği gösterilmektedir.
Etkinlik işleyici ayarlama
Yalnızca gezinme verilerini kullanmak için didChangeNavInfo etkinliği için bir etkinlik işleyici uygulamanız gerekir. Kullanıcılarınıza adım adım rota sunmak için etkinlik işleyicide gezi ve adım bilgilerine erişin.
Etkinlik işleyicilerini uygulamak için haritanın görünüm denetleyicisinin
GMSNavigatorListener
protokolünü uygulaması gerekir. iOS için Navigation SDK'daki etkinlikleri işleme hakkında ayrıntılı bilgi için Listen for navigation events (Navigasyon etkinliklerini dinleme) başlıklı makaleyi inceleyin.
didChangeNavInfo etkinliği işleniyor
Uygulamanıza adım adım rota desteği eklemek için didChangeNavInfo etkinliğine yönelik bir dinleyici oluşturun. Etkinlik dinleyicide, adım adım rotayı kontrol etmek için aşağıdaki sınıfları ve enum'ları kullanın:
GMSNavigationNavInfo— Navigasyonun durumuyla ilgili bilgileri tanımlayan sınıf.GMSNavigationStepInfo— Navigasyon rotasındaki tek bir adımla ilgili bilgileri tanımlayan sınıf.GMSNavigationNavState- Navigasyonun mevcut durumunu (ör. yolda, yeni rota çiziliyor veya durduruldu) tanımlayan enum.GMSNavigationDrivingSide— Bu adımın sağdan veya soldan sürüş rotasında olup olmadığını tanımlayan enum.GMSNavigationManeuver— Sola dönme veya sağa dönme gibi gerçekleştirilecek gezinme işlemini tanımlayan enum.
Aşağıda, didChangeNavInfo etkinliği için örnek etkinlik işleyiciler gösterilmektedir:
Swift
// ViewController.swift class SomeViewController: UIViewController { ... mapView.navigator?.add(self); ... } extension SomeViewController: GMSNavigatorListener { func navigator(_ navigator: GMSNavigator, didUpdateNavInfo navInfo: GMSNavigationNavInfo) { // Get the current step information if navInfo.navState == .enroute { if let currentStep = navInfo.currentStep { ... roadNameLabel.text = currentStep.simpleRoadName ... } } } }
Objective-C
// ViewController.h @interface SomeViewController () <GMSNavigatorListener> @end // ViewController.m @implementation SomeViewController // Some initialization code. ... { ... [_mapView.navigator addListener:self]; ... } #pragma mark GMSNavigatorListener - (void)navigator:(GMSNavigator *)navigator didUpdateNavInfo:(GMSNavigationNavInfo *)navInfo { // Get the current step information if (navInfo.navState == GMSNavigationNavStateEnroute) { GMSNavigationStepInfo *currentStep = navInfo.currentStep; if (currentStep) { ... roadNameLabel.text = currentStep.simpleRoadName; ... } } ... }
Gezinme durumları
Navigasyonun mevcut durumunu öğrenmek için GMSNavigationNavInfo öğesinin navState özelliğini kullanın. Bu durum aşağıdakilerden biri olabilir:
Yolda:
GMSNavigationNavStateEnroutedurumu, rehberli navigasyonun etkin olduğunu ve kullanıcının sağlanan rotada olduğunu gösterir. Yaklaşan manevra adımıyla ilgili bilgiler mevcut.Yeni rota çiziliyor -
GMSNavigationNavStateRerouting, navigasyonun devam ettiği ancak navigasyon cihazının yeni bir rota aradığı anlamına gelir. Henüz yeni bir rota olmadığı için yaklaşan manevra adımı kullanılamıyor.Durduruldu -
GMSNavigationNavStateStopped, navigasyonun sona erdiğini gösterir. Örneğin, kullanıcı uygulamada navigasyondan çıktığında navigasyon durur. Örnek uygulamada,GMSNavigationNavStateStoppeddurumu, adım talimatlarının gösterilmeye devam etmesini önlemek için navigasyon bilgisi ekranını temizler.
Şerit yardımı
Navigasyon SDK'sı, navigasyon dönüş kartındaki şeritleri GMSNavigationLane ve GMSNavigationLaneDirection veri nesneleri olarak gösterir. Bir GMSNavigationLane nesnesi, gezinme sırasında belirli bir şeridi temsil eder ve bu şeritten yapılabilecek tüm dönüşümleri açıklayan bir GMSNavigationLaneDirection nesne listesine sahiptir.
Sürücünün bir şeritte gitmesi önerilen yön, recommended alanı kullanılarak işaretlenir.

Şerit yardımı örneği
Aşağıdaki snippet, önceki ekran görüntüsünde gösterilen şeritlerin veri gösterimini açıklar.
// Lane 1
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 2
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 3
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false}]
// Lane 4
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false},
{/*GMSNavigationLaneShape=*/ GMSNavigationLaneShapeNormalRight, /*recommended=*/ false}]
Şerit yardımı resimleri
Navigasyon SDK'sı, GMSNavigationStepInfo tarafından iletilen her navigasyon adımı için şerit resimlerinin oluşturulmasını destekler. Bu simgeler, CarPlay'in resim boyutlandırma yönergelerine uygundur.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];
Manevralar için simge oluşturma
![]()
GMSNavigationManeuver enum'ı, navigasyon sırasında gerçekleşebilecek her olası manevrayı tanımlar. Belirli bir adımın manevrasını GMSNavigationStepInfo'ın maneuver özelliğinden alabilirsiniz.
Manevra simgeleri oluşturmanız ve bunları ilgili manevralarla eşlemeniz gerekir.
Bazı manevralar için GMSNavigationManeuverDestinationLeft ve GMSNavigationManeuverDestinationRight gibi bir simgeyle bire bir eşleme ayarlayabilirsiniz. Ancak bazı manevralar diğer manevralarla ortak özelliklere sahip olduğundan, birden fazla manevrayı tek bir simgeyle eşlemek isteyebilirsiniz. Örneğin, hem GMSNavigationManeuverTurnLeft hem de GMSNavigationManeuverOnRampLeft, sola dönüş simgesiyle eşlenebilir.
Bazı manevralarda, SDK'nın bir ülkenin sürüş tarafına göre belirlediği ek bir "Saat Yönünde" veya "Saat Yönünün Tersine" etiketi bulunur. Örneğin, trafiğin soldan aktığı ülkelerde sürücüler döner kavşaklarda veya U dönüşü yaparken saat yönünde hareket ederken trafiğin sağdan aktığı ülkelerde saat yönünün tersine hareket ederler. Navigation SDK, manevranın soldan veya sağdan akan trafikte gerçekleşip gerçekleşmediğini algılar ve uygun manevrayı verir. Bu nedenle, saat yönünde ve saat yönünün tersine manevra simgeleri farklı olabilir.
Farklı manevralara ait örnek simgeleri görmek için genişletin.
| Örnek simge | Adım Adım Manevralar |
|---|---|
![]() |
DEPARTUNKNOWN |
![]() |
STRAIGHTON_RAMP_UNSPECIFIEDOFF_RAMP_UNSPECIFIEDNAME_CHANGE
|
![]() |
TURN_RIGHTON_RAMP_RIGHT
|
![]() |
TURN_LEFTON_RAMP_LEFT
|
![]() |
TURN_SLIGHT_RIGHTON_RAMP_SLIGHT_RIGHTOFF_RAMP_SLIGHT_RIGHT
|
![]() |
TURN_SLIGHT_LEFTON_RAMP_SLIGHT_LEFTOFF_RAMP_SLIGHT_LEFT
|
![]() |
TURN_SHARP_RIGHTON_RAMP_SHARP_RIGHTOFF_RAMP_SHARP_RIGHT
|
![]() |
TURN_SHARP_LEFTON_RAMP_SHARP_LEFTOFF_RAMP_SHARP_LEFT
|
![]() |
TURN_U_TURN_COUNTERCLOCKWISEON_RAMP_U_TURN_COUNTERCLOCKWISEOFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
![]() |
TURN_U_TURN_CLOCKWISEON_RAMP_U_TURN_CLOCKWISEOFF_RAMP_U_TURN_CLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_RIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_RIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_RIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_RIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_RIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_RIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_STRAIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_STRAIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_LEFT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_LEFT_CLOCKWISE
|
![]() |
ROUNDABOUT_LEFT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_LEFT_CLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_LEFT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_LEFT_CLOCKWISE
|
![]() |
ROUNDABOUT_U_TURN_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_U_TURN_CLOCKWISE
|
![]() |
ROUNDABOUT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_CLOCKWISE
|
![]() |
ROUNDABOUT_EXIT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_EXIT_CLOCKWISE
|
![]() |
MERGE_RIGHTOFF_RAMP_RIGHT
|
![]() |
MERGE_LEFTOFF_RAMP_LEFT
|
![]() |
FORK_RIGHTTURN_KEEP_RIGHTON_RAMP_KEEP_RIGHTOFF_RAMP_KEEP_RIGHT
|
![]() |
FORK_LEFTTURN_KEEP_LEFTON_RAMP_KEEP_LEFTOFF_RAMP_KEEP_LEFT
|
![]() |
MERGE_UNSPECIFIED
|
![]() |
DESTINATION
|
![]() |
DESTINATION_RIGHT
|
![]() |
DESTINATION_LEFT
|
![]() |
FERRY_BOAT
|
![]() |
FERRY_TRAIN
|
Oluşturulan simgeleri kullanma
Navigasyon SDK'sı, belirli bir GMSNavigationStepInfo için manevra simgeleri oluşturmayı destekler. Bu simgeler, CarPlay'deki resim boyutlandırma yönergelerine
uygundur.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];







































