فید داده گامبهگام اطلاعات فقط ناوبری را به دستگاههایی ارائه میدهد که برای راهنمایی ناوبری مبتنی بر نقشه طراحی نشدهاند. این مؤلفه مانورهای پیشرو را با عناصری که ارائه میدهید فراهم میکند:
- نمادها (چپ، راست، دوربرگردان)
- دور زدن در میدانها
- نام جادهها
- مسافت و زمان تخمینی تا مرحله بعدی پیمایش یا مقصد نهایی
میتوانید از فید گامبهگام برای ایجاد تجربههایی که در آنها «واسط کاربر کیت توسعه نرمافزار» کامل «پیمایش» مناسب نیست، مثل نمایشگرهای کوچک، استفاده کنید. برای مثال، میتوانید از این مورد برای موتورسواران استفاده کنید، جایی که میتوانید راهنمایی فقط ناوبری را برای کمک به آنها در رسیدن به مقصدشان سریعتر و با اطمینان بیشتر با حداقل حواسپرتی ارائه دهید.
عناصر نمایش ضروری پیمایش
فیلدهای اصلی برای هر مرحله پیمایش عبارتاند از نام کامل جاده،
مانور، و فاصله کل مرحله که در
GMSNavigationStepInfo دردسترس است.
برای کل سفر، ممکن است بخواهید زمان و مسافت باقیمانده تا مرحله فعلی یا مقصد را نمایش دهید که همه این موارد در GMSNavigationNavInfo دردسترس است.
تصویر سمت چپ نمونهای از این عناصر ضروری پیمایش را نشان میدهد.
راهاندازی کردن شنونده رویداد
برای استفاده از دادههای فقط پیمایش، باید شنونده رویدادی را برای رویداد didChangeNavInfo پیادهسازی کنید. در شنونده رویداد، به اطلاعات سفر و
مرحله دسترسی پیدا کنید تا ناوبری گامبهگام را به کاربرانتان ارائه دهید.
برای پیادهسازی کنترلکنندههای رویداد، کنترلکننده نمای نقشه باید
GMSNavigatorListener
پروتکل را پیادهسازی کند. برای اطلاعات دقیق درباره مدیریت رویدادها در
«کیت توسعه نرمافزار پیمایش برای iOS»، به شنیدن رویدادهای پیمایش مراجعه کنید.
درحال رسیدگی به رویداد didChangeNavInfo
برای رویداد didChangeNavInfo شنوندهای ایجاد کنید تا پشتیبانی گامبهگام را به برنامهتان اضافه کنید. در شنونده رویداد، از کلاسها و شمارشهای زیر برای کنترل ناوبری گامبهگام استفاده کنید:
GMSNavigationNavInfo— کلاسی که اطلاعات مربوط به وضعیت ناوبری را تعریف میکند.GMSNavigationStepInfo— کلاس تعریفکننده اطلاعات درباره یک مرحله در مسیر پیمایش.GMSNavigationNavState— Enum defining the current state of a navigation, such as enroute, rerouting, or stopped.GMSNavigationDrivingSide— شمارشی که مشخص میکند این مرحله در مسیر راستگرد یا چپگرد است.GMSNavigationManeuver— شمارشی که کنش پیمایش را برای انجام تعریف میکند، مثلاً به چپ بپیچید یا به راست بپیچید.
در زیر، شنوندگان رویداد نمونه برای رویداد didChangeNavInfo نشان داده شده است:
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 ... } } } }
آبجکتیو-سی
// 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; ... } } ... }
حالتهای پیمایش
از ویژگی navState GMSNavigationNavInfo
استفاده کنید تا وضعیت فعلی پیمایش را دریافت کنید که یکی از موارد زیر است:
درمسیر - وضعیت
GMSNavigationNavStateEnrouteیعنی ناوبری گامبهگام فعال است و کاربر در مسیر ارائهشده قرار دارد. اطلاعات مربوط به مرحله مانور پیشرو دردسترس است.Rerouting -
GMSNavigationNavStateReroutingیعنی ناوبری درحال انجام است، اما ناوبر بهدنبال مسیر جدیدی میگردد. مرحله مانور پیشرو دردسترس نیست، زیرا هنوز مسیر جدیدی وجود ندارد.متوقف شد -
GMSNavigationNavStateStoppedیعنی ناوبری پایان یافته است. برای مثال، وقتی کاربر از ناوبری در برنامه خارج میشود، ناوبری متوقف میشود. در برنامه نمونه، حالتGMSNavigationNavStateStoppedنمایش اطلاعات ناوبری را پاک میکند تا از نمایش دستورالعملهای گامبهگام باقیمانده جلوگیری شود.
راهنمای باند
«کیت توسعه نرمافزار پیمایش» لاینها را در کارت پیچ پیمایش بهصورت
اشیاء داده GMSNavigationLane و GMSNavigationLaneDirection نشان میدهد. شیء GMSNavigationLane نشاندهنده یک لاین خاص درطول ناوبری است و فهرستی از اشیاء GMSNavigationLaneDirection دارد که همه پیچهایی را که میتوان از این لاین انجام داد توصیف میکند.
جهت توصیهشدهای که راننده باید در یک خط حرکت کند بااستفاده از فیلد recommended علامتگذاری میشود.

نمونه راهنمای باند
قطعه کد زیر نمایش دادههای خطوط نشاندادهشده در نماگرفت قبلی را نشان میدهد.
// 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}]
تصاویر راهنمای باند
کیت توسعه نرمافزار پیمایش از تولید تصاویر خط برای هر مرحله پیمایش
همانطور که توسط GMSNavigationStepInfo منتقل میشود پشتیبانی میکند. این نمادها با راهنمای اندازه تصویر CarPlay مطابقت دارند.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
آبجکتیو-سی
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];
درحال ایجاد نمادها برای مانورها
![]()
GMSNavigationManeuver
enum هر مانور ممکنی را که میتواند درحین پیمایش رخ دهد تعریف میکند و شما
میتوانید مانور را برای یک مرحله معین از ویژگی maneuver
GMSNavigationStepInfo دریافت کنید.
باید نمادهای مانور ایجاد کنید و آنها را با مانورهای مرتبطشان جفت کنید.
برای برخیاز مانورها، میتوانید یک نگاشت یکبهیک به نماد تنظیم کنید، مثلاً
GMSNavigationManeuverDestinationLeft و
GMSNavigationManeuverDestinationRight. بااینحال، ازآنجاییکه برخیاز مانورها ویژگیهای مشترکی با مانورهای دیگر دارند، بهتر است بیشاز یک مانور را به یک نماد واحد اختصاص دهید. برای مثال، GMSNavigationManeuverTurnLeft و
GMSNavigationManeuverOnRampLeft میتوانند هر دو به نماد گردش به چپ نگاشت شوند.
برخیاز مانورها حاوی برچسب اضافی «ساعتگرد» یا «پادساعتگرد» هستند، که کیت توسعه نرمافزار آن را براساس جهت رانندگی در کشور تعیین میکند. برای مثال، در کشورهایی که رانندگی در سمت چپ جاده است، رانندگان در جهت ساعتگرد وارد میدان میشوند یا دور کامل میزنند، درحالیکه در کشورهایی که رانندگی در سمت راست جاده است، در جهت پادساعتگرد حرکت میکنند. کیت توسعه نرمافزار Navigation تشخیص میدهد که آیا مانور در ترافیک سمت چپ یا راست رخ میدهد و مانور مناسب را خروجی میدهد. بنابراین، نماد مانور شما ممکن است برای مانور ساعتگرد درمقابل پادساعتگرد متفاوت باشد.
ازهم بازکردن برای دیدن نمادهای نمونه برای مانورهای مختلف
| نماد نمونه | مانورهای گامبهگام |
|---|---|
![]() |
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
|
استفاده از نمادهای تولیدشده
«کیت توسعه نرمافزار پیمایش» از تولید نمادهای مانور برای GMSNavigationStepInfo معین پشتیبانی میکند. این نمادها با راهنمای اندازه تصویر CarPlay مطابقت دارند.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
آبجکتیو-سی
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];







































