فید داده گامبهگام اطلاعات فقط ناوبری را به دستگاههایی ارائه میدهد که برای راهنمایی ناوبری مبتنی بر نقشه طراحی نشدهاند. این مؤلفه مانورهای پیشرو را با عناصری که ارائه میدهید فراهم میکند:
- نمادها (چپ، راست، دوربرگردان)
- دور زدن در میدانها
- نام جادهها
- مسافت و زمان تخمینی تا مرحله پیمایش بعدی یا مقصد نهایی
میتوانید از فید گامبهگام برای ایجاد تجربههایی استفاده کنید که در آنها میانای کاربر کامل Navigation SDK مناسب نیست، مثلاً برای نمایشگرهای کوچک. برای مثال، میتوانید از این مورد برای موتورسواران استفاده کنید، جایی که میتوانید راهنمایی فقط ناوبری را برای کمک به آنها در رسیدن سریعتر و مطمئنتر به مقصد با حداقل حواسپرتی ارائه دهید.
عناصر ضروری نمایش پیمایش
فیلدهای اصلی برای هر مرحله پیمایش عبارتند از نام کامل جاده،
مانور، و مسافت کل مرحله، که در
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— Enum که مشخص میکند این مرحله در مسیر رانندگی از راست است یا رانندگی از چپ.GMSNavigationManeuver— Enum که کنش پیمایش را تعریف میکند، مثل گردش به چپ یا گردش به راست.
در زیر نمونههایی از شنوندگان رویداد برای رویداد 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یعنی ناوبری راهنماییشده فعال است و کاربر در مسیر ارائهشده قرار دارد. اطلاعات مربوط به مرحله مانور پیشرو دردسترس است.تغییر مسیر -
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];







































