Adım adım yol tarifi veri feed'i, haritaya dayalı navigasyon kılavuzu için tasarlanmamış cihazlara yalnızca navigasyon bilgileri sağlar. Sağlanan öğelerle yaklaşan manevralar için aşağıdakiler sağlanır:
- simgeleri (sol, sağ, U dönüşü)
- döner kavşaklardaki dönüş numaraları
- yol adları
- Sonraki navigasyon adımına veya nihai hedefe olan tahmini mesafe ve süre
Küçük ekranlı ekranlar gibi tam Navigasyon SDK'sı kullanıcı arayüzünün uygun olmadığı deneyimler oluşturmak için adım adım yol tarifi feed'ini kullanabilirsiniz. Örneğin, iki tekerlekli araç sürücüleri için bu özelliği kullanabilirsiniz. Bu sayede, sürücülerin dikkatini dağıtmadan gidecekleri yere daha hızlı ve güvenle ulaşmalarına yardımcı olmak için yalnızca navigasyon rehberliği yansıtabilirsiniz.
Temel gezinme görüntüleme öğeleri
Her navigasyon adımı için birincil alanlar, GMSNavigationStepInfo
alanında bulunan yol adının tamamı, manevra ve adımın toplam mesafesidir.
Genel yolculuk için, mevcut adıma veya hedefe kalan süreyi ve mesafeyi görüntülemek 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 yol tarifi sunmak için etkinlik dinleyicisinde gezi ve adım bilgilerine erişin.
Etkinlik işleyicileri uygulamak için haritanın görüntü denetleyicisinin GMSNavigatorListener
protokolünü uygulaması gerekir. iOS için Gezinme SDK'sında etkinlikleri işleme hakkında ayrıntılı bilgi için Gezinme etkinliklerini dinleme başlıklı makaleyi inceleyin.
didChangeNavInfo
etkinliğini işleme
Uygulamanıza adım adım yol tarifi desteği eklemek için didChangeNavInfo
etkinliği için bir dinleyici oluşturun. Adım adım yol tarifini kontrol etmek üzere etkinlik işleyicide aşağıdaki sınıfları ve enum'ları kullanın:
GMSNavigationNavInfo
: Gezinme durumuyla ilgili sınıf tanımlama bilgileri.GMSNavigationStepInfo
: Bir navigasyon rotasındaki tek bir adımla ilgili sınıf tanımlama bilgileri.GMSNavigationNavState
: Bir navigasyonun mevcut durumunu (ör. rota üzerinde, yeniden rota oluşturma veya durdu) tanımlayan enum.GMSNavigationDrivingSide
: Bu adımın sağdan mı yoksa soldan mı sürüş rotasında olduğunu tanımlayan enum.GMSNavigationManeuver
: Yapılacak gezinme işlemini (ör. sola veya sağa dönme) tanımlayan enum.
didChangeNavInfo
etkinliği için örnek etkinlik işleyiciler aşağıda verilmiştir:
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; ... } } ... }
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 ... } } } }
Gezinme durumları
Gezinmenin mevcut durumunu almak için GMSNavigationNavInfo
özelliğinin navState
mülkünü kullanın. Bu durum aşağıdakilerden biridir:
Yolda:
GMSNavigationNavStateEnroute
durumu, rehberli navigasyonun şu anda etkin olduğu ve kullanıcının belirtilen rotada olduğu anlamına gelir. Yaklaşan mevcut manevra adımı hakkında bilgi edinebilirsiniz.Yeni rota çiziliyor:
GMSNavigationNavStateRerouting
, navigasyonun devam ettiği ancak navigasyon cihazının yeni bir rota aradığı anlamına gelir. Henüz yeni rota olmadığı için yaklaşan manevra adımı kullanılamıyor.Durduruldu:
GMSNavigationNavStateStopped
, navigasyonun sona erdiğini gösterir. Örneğin, kullanıcı uygulamadaki navigasyondan çıktığında navigasyon durur. Örnek uygulamada,GMSNavigationNavStateStopped
durumu, kalan adım talimatlarının gösterilmesini önlemek için navigasyon bilgi ekranını temizler.
Şerit yardımı
Navigasyon SDK'sı, navigasyon dönüş 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 bir listesini içerir.
Sürücünün bir şeritte gitmesi gereken önerilen yön, recommended
alanı kullanılarak işaretlenir.
Şerit yardımı örneği
Aşağıdaki snippet'te, önceki ekran görüntüsünde gösterilen şeritlerin veri temsili gösterilmektedir.
// 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 aktarıldığı gibi 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, gezinme sırasında gerçekleşebilecek her manevrayı tanımlar. Belirli bir adıma ait manevrayı GMSNavigationStepInfo
öğesinin maneuver
mülkünden 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 oluşturabilirsiniz. Ancak bazı manevralar diğer manevralarla ortak özelliklere sahip olduğundan birden fazla manevrayı tek bir simgeyle eşlemek isteyebilirsiniz. Örneğin, GMSNavigationManeuverTurnLeft
ve GMSNavigationManeuverOnRampLeft
, sol 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, sürüşlerin yolun sol tarafında yapıldığı ülkelerde sürücüler, döner kavşakta veya U dönüşünde saat yönünde hareket ederken, sürüşlerin yolun sağ tarafında yapıldığı ülkelerde saat yönünün tersine hareket ederler. Navigasyon SDK'sı, bir manevranın sol taraftaki trafikte mi yoksa sağ taraftaki trafikte mi gerçekleştiğini algılar ve uygun manevrayı döndürür. Bu nedenle, manevra simgeniz saat yönünde ve saat yönünün tersine yapılan manevralar için farklı olabilir.
Farklı manevralara ilişkin örnek simgeleri görmek için genişletin
Örnek simge | Adım Adım Manevralar |
---|---|
DEPART UNKNOWN |
|
STRAIGHT ON_RAMP_UNSPECIFIED OFF_RAMP_UNSPECIFIED NAME_CHANGE
|
|
TURN_RIGHT ON_RAMP_RIGHT
|
|
TURN_LEFT ON_RAMP_LEFT
|
|
TURN_SLIGHT_RIGHT ON_RAMP_SLIGHT_RIGHT OFF_RAMP_SLIGHT_RIGHT
|
|
TURN_SLIGHT_LEFT ON_RAMP_SLIGHT_LEFT OFF_RAMP_SLIGHT_LEFT
|
|
TURN_SHARP_RIGHT ON_RAMP_SHARP_RIGHT OFF_RAMP_SHARP_RIGHT
|
|
TURN_SHARP_LEFT ON_RAMP_SHARP_LEFT OFF_RAMP_SHARP_LEFT
|
|
TURN_U_TURN_COUNTERCLOCKWISE ON_RAMP_U_TURN_COUNTERCLOCKWISE OFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
|
TURN_U_TURN_CLOCKWISE ON_RAMP_U_TURN_CLOCKWISE OFF_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_RIGHT OFF_RAMP_RIGHT
|
|
MERGE_LEFT OFF_RAMP_LEFT
|
|
FORK_RIGHT TURN_KEEP_RIGHT ON_RAMP_KEEP_RIGHT OFF_RAMP_KEEP_RIGHT
|
|
FORK_LEFT TURN_KEEP_LEFT ON_RAMP_KEEP_LEFT OFF_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 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];