Adım adım veri feed'i, harita tabanlı navigasyon yardımı için tasarlanmamış cihazlara yalnızca navigasyon bilgileri sağlar. Sağladığınız öğelerle 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 olan 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ülerinin dikkatlerini dağıtmadan, daha hızlı ve güvenli bir şekilde hedeflerine 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.
Gezinin tamamı için, 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 oluşturma
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 sağlamak için etkinlik işleyicide gezi ve adım bilgilerine erişin.
Etkinlik işleyicileri uygulamak için haritanın görünüm denetleyicisi GMSNavigatorListener protokolünü uygulamalıdır. iOS için Navigasyon SDK'sında etkinlikleri işleme hakkında ayrıntılı bilgi edinmek istiyorsanız Navigasyon etkinliklerini dinleme başlıklı makaleyi inceleyin.
didChangeNavInfo etkinliğini işleme
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 akan trafikte olup olmadığını tanımlayan enum.GMSNavigationManeuver— Sola veya sağa dönme gibi yapılacak navigasyon 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 özellik, aşağıdakilerden biridir:
Yolda:
GMSNavigationNavStateEnroutedurumu, sesli navigasyonun etkin olduğu ve kullanıcının sağlanan rotada olduğu anlamına gelir. 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ığından 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, navigasyon bilgi ekranını temizleyerek kalan adım talimatlarının gösterilmesini engeller.
Şerit yardımı
Navigasyon SDK'sı, navigasyon rota kartındaki şeritleri GMSNavigationLane ve GMSNavigationLaneDirection veri nesneleri olarak temsil eder. GMSNavigationLane nesnesi, navigasyon sırasında belirli bir şeridi temsil eder ve bu şeritten yapılabilecek tüm dönüşleri açıklayan GMSNavigationLaneDirection nesnelerinin listesini içerir.
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 temsilini göstermektedir.
// 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 resimleri oluşturmayı 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'u, 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ı ilişkili 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ı manevralar, 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 içerir. Ö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ı gösterir. Bu nedenle, saat yönünde ve saat yönünün tersine manevra simgeleri farklı olabilir.
Farklı manevralar için örnek simgeleri görmek üzere genişletin
| Örnek Simgesi | 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 simgelerinin oluşturulmasını destekler. Bu simgeler, CarPlay resim boyutlandırma kılavuzuna 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];







































