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şaklardaki dönüş sayıları
- yol adları
- bir sonraki navigasyon adımına veya nihai hedefe olan tahmini mesafeler ve süre
Tam Navigation SDK kullanıcı arayüzünün uygun olmadığı deneyimler (ör. küçük ekranlı görüntüler) 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, yalnızca navigasyon talimatlarını yansıtarak sürücülerin gidecekleri yere daha hızlı ve güvenli bir şekilde, dikkatleri dağılmadan ulaşmalarına yardımcı olabilirsiniz.
Temel gezinme görüntüleme öğeleri
Her gezinme adımının birincil alanları, GMSNavigationStepInfo
içinde kullanılabilen tam yol adı, manevra ve adımın toplam mesafesidir.
Genel gezi için, mevcut adıma veya hedefe kalan süreyi ve mesafeyi göstermek isteyebilirsiniz. Bunların tümü GMSNavigationNavInfo
içinde kullanılabilir.
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. Etkinlik işleyicisi içinde, kullanıcılarınıza adım adım yol tarifi sağlamak için 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'da 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ğini işleme
Uygulamanıza adım adım yol tarifi desteği eklemek için didChangeNavInfo
etkinliği için bir işleyici oluşturun. Etkinlik işleyicide, adım adım yol tarifini kontrol etmek için aşağıdaki sınıfları ve numaralandırmaları kullanın:
GMSNavigationNavInfo
— Gezinmenin durumu hakkında sınıf tanımlayan bilgiler.GMSNavigationStepInfo
— Bir gezinme rotası üzerindeki tek bir adımla ilgili sınıf tanımlama bilgileri.GMSNavigationNavState
— Enum defining the current state of a navigation, such as enroute, rerouting, or stopped.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ğine ilişkin ö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ı
Gezinmenin mevcut durumunu almak için GMSNavigationNavInfo
öğesinin navState
özelliğini kullanın. Bu özellik aşağıdaki değerlerden birini alır:
Yolda:
GMSNavigationNavStateEnroute
durumu, rehberli navigasyonun etkin olduğunu ve kullanıcının sağlanan rotada olduğunu gösterir. Mevcut yaklaşan manevra adımıyla ilgili bilgiler kullanılabilir.Yeniden yönlendirme:
GMSNavigationNavStateRerouting
, navigasyonun devam ettiğini ancak navigasyon cihazının yeni bir rota aradığını gösterir. Henüz yeni bir rota olmadığı için bir sonraki manevra adımı kullanılamıyor.Durduruldu:
GMSNavigationNavStateStopped
, navigasyonun sona erdiği anlamına gelir. Örneğin, kullanıcı uygulamada navigasyondan çıktığında navigasyon durur. Örnek uygulamada,GMSNavigationNavStateStopped
durumu, adım talimatlarının görüntülenmesini önlemek için navigasyon bilgisi ekranını temizler.
Şerit yardımı
Navigation SDK, 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üşleri açıklayan bir GMSNavigationLaneDirection
nesne listesine sahiptir.
Bir sürücünün ş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 belirtildiği şekilde her navigasyon adımı için şerit görüntüleri 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'ı, gezinme sırasında gerçekleşebilecek her olası manevrayı tanımlar. Belirli bir adım için manevrayı GMSNavigationStepInfo
öğesinin maneuver
özelliğinden alabilirsiniz.
Manevra simgeleri oluşturmalı ve bunları ilgili manevralarla eşleştirmelisiniz.
Bazı manevralar için GMSNavigationManeuverDestinationLeft
ve GMSNavigationManeuverDestinationRight
gibi bir simgeyle bire bir eşleme ayarlayabilirsiniz. Ancak bazı manevralar diğer manevralarla benzer özelliklere sahip olduğundan tek bir simgeye birden fazla manevra eşlemek isteyebilirsiniz. Örneğin, hem GMSNavigationManeuverTurnLeft
hem de GMSNavigationManeuverOnRampLeft
, sola dönüş simgesiyle eşlenebilir.
Bazı manevralarda ek olarak "Saat Yönünde" veya "Saat Yönünün Tersine" etiketi bulunur. Bu etiket, SDK tarafından ülkenin sürüş tarafına göre belirlenir. Örneğin, yolun sol tarafında araç kullanmanın yaygın olduğu ülkelerde sürücüler, kavşaklarda veya U dönüşlerinde saat yönünde hareket ederken yolun sağ tarafında araç kullanmanın yaygın olduğu ülkelerde saat yönünün tersine hareket eder. Navigation SDK, manevranın soldan mı yoksa sağdan akan trafikte mi gerçekleştiğini algılar ve uygun manevrayı verir. Bu nedenle, manevra simgeniz saat yönünde ve saat yönünün tersine manevralarda 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 simgeleri oluşturulmasını destekler. Bu simgeler, CarPlay'in görüntü 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];