Adım adım veri feed'i, harita tabanlı navigasyon rehberliği için tasarlanmamış cihazlara yalnızca gezinmeyle ilgili bilgiler sağlar. Sağladığınız öğelerle yaklaşan manevraları sağlar:
- simgeler (sol, sağ, U dönüşü)
- Döner kavşaklarda rakamları çevir
- yol adları
- bir sonraki navigasyon adımına veya nihai hedefe kalan tahmini mesafeler
Adım adım özet akışını, küçük ekran görüntüleri gibi tam Navigasyon SDK kullanıcı arayüzünün uygun olmadığı deneyimler oluşturmak için kullanabilirsiniz. Örneğin, iki tekerlekli araç sürücüleri için bu özelliği kullanabilirsiniz. Bu durumda, yalnızca navigasyonla ilgili rehberliği projeksiyonlarla gösterebilir, böylece dikkat dağıtıcı unsurları minimum düzeyde tutarak hedeflerine daha hızlı ve daha güvenli bir şekilde ulaşmalarına yardımcı olabilirsiniz.
Temel gezinme ekranı öğeleri
Her bir navigasyon adımının birincil alanları, GMSNavigationStepInfo'da bulabileceğiniz tam yol adı, manevra ve adımın toplam mesafesidir.
Seyahatin geneli için, tümü GMSNavigationNavInfo'da erişebileceğiniz geçerli adıma veya hedefe kalan süreyi ve mesafeyi görüntülemek isteyebilirsiniz. Sağ taraftaki resimde, bu temel gezinme öğelerinin bir örneği gösterilmektedir.
Etkinlik işleyici ayarlama
Yalnızca gezinme verilerini kullanmak istiyorsanız didChangeNavInfo
etkinliği için bir etkinlik işleyici uygulamanız gerekir. Etkinlik dinleyicisi içinde, kullanıcılarınıza adım adım navigasyon sağlamak için gezi ve adım bilgilerine erişin.
Etkinlik işleyicileri uygulamak için haritanın görünüm 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 bölümüne bakın.
didChangeNavInfo etkinliğini işleme
Uygulamanıza adım adım destek eklemek için didChangeNavInfo
etkinliği için bir işleyici oluşturun. Etkinlik işleyicide adım adım navigasyonu kontrol etmek için aşağıdaki sınıfları ve enum'ları kullanın:
GMSNavigationNavInfo — Gezinme durumu hakkında tanımlayıcı bilgiler içeren sınıf.
GMSNavigationStepInfo — Gezinme rotası üzerindeki tek bir adımla ilgili tanımlayıcı bilgi.
GMSNavigationNavState - Bir navigasyonun mevcut durumunu (ör. yolda, yeniden rota çiziliyor veya durdu) tanımlayan enum.
GMSNavigationDrivingSide: Bu adımın sağdan mı yoksa soldan mı olduğunu tanımlayan enum.
GMSNavigationManeuver — Sola dönme 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şleyicileri gösterilmektedir:
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ı
Aşağıdakilerden biri olan geçerli gezinme durumunu almak için GMSNavigationNavInfo özelliğinin navState
özelliğini kullanın:
Yoldayım:
GMSNavigationNavStateEnroute
durumu, rehberli navigasyonun o anda etkin olduğu ve kullanıcının belirtilen rotada olduğu anlamına gelir. Yaklaşan manevra adımıyla ilgili bilgi mevcuttur.Yeni rota belirleniyor:
GMSNavigationNavStateRerouting
, navigasyonun devam ettiği, ancak gezginin yeni bir rota aradığı anlamına gelir. Henüz yeni rota olmadığı için Yaklaşan manevra adımı mevcut değil.Durduruldu:
GMSNavigationNavStateStopped
, navigasyonun sona erdiği anlamına gelir. Örneğin, kullanıcı uygulamada gezinmeden çıktığında gezinme durur. Örnek uygulamadaGMSNavigationNavStateStopped
durumu, kalan adım talimatlarının görüntülenmesini önlemek için navigasyon bilgisi ekranını temizler.
Manevralar için simge oluşturma
GMSNavigationManeuver
enum, navigasyon sırasında gerçekleştirilebilecek her olası manevrayı tanımlar ve belirli bir adımdaki manevrayı,
GMSNavigationStepInfo özelliğinin maneuver
özelliğinden öğrenebilirsiniz.
Manevra simgeleri oluşturmanız ve bunları ilgili manevralarla eşleştirmeniz gerekir.
Bazı manevralarda, GMSNavigationManeuverDestinationLeft
ve GMSNavigationManeuverDestinationRight
gibi bir simgeyle bire bir eşleme oluşturabilirsiniz.
Bununla birlikte, bazı manevralar diğer ortalamalarla ortak özelliklere sahip olduğundan, tek bir simgeyle birden fazla manevra yapmak isteyebilirsiniz. Örneğin, hem GMSNavigationManeuverTurnLeft
hem de GMSNavigationManeuverOnRampLeft
sola dönüş simgesiyle eşleşebilir.
Bazı manevralar, SDK'nın ülkenin sürüş yönüne göre belirlediği ek bir "Saat Yönü" veya "Saat Yönünün Tersine" etiketi içerir. Örneğin, sürüşün yolun sol tarafında olduğu ülkelerde, sürücüler bir döner kavşağı veya saat yönünde U dönüşü kullanırken, yolun sağ tarafındaki ülkeler saat yönünün tersine gider. Gezinme SDK'sı, sol veya sağ taraftaki trafikte bir manevra olup olmadığını algılar ve uygun manevrayı sağlar. Bu nedenle, saat yönünde ve saat yönünün tersine manevra yaparken manevra simgeniz farklı olabilir.
Farklı hareketler için örnek simgeleri görmek için genişletin
Örnek Simge | Adım Adım Hareketler |
---|---|
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
|