کیت توسعه نرمافزاری ناوبری (Navigation SDK) برای iOS روشهای پیشرفتهای برای تعیین نقاط مسیر یا نقاط ناوبری ارائه میدهد که مسیریابی دقیقتر و تجربه رسیدن بهتری را، به ویژه برای مقاصدی با ورودیهای متعدد یا نقاط ناوبری خاص، فراهم میکند. میتوانید با استفاده از یک navigationPointToken ، که رشتهای است که یک مکان و زمینه مسیر اضافی را رمزگذاری میکند، به مکانهای دقیق مسیریابی کنید. همچنین میتوانید مختصات طول و عرض جغرافیایی را با یک شناسه مکان (Place ID) برای زمینه بیشتر ترکیب کنید.
پیشینه
قبل از نسخه ۱۰.۱۰، میتوانستید یک Waypoint با استفاده از مختصات مکان یا شناسه مکان تعریف کنید. اگرچه گاهی اوقات مؤثر است، اما مسیریابی صرفاً بر اساس طول و عرض جغرافیایی میتواند گاهی اوقات منجر به نقاط سوار یا پیاده شدن نامناسب شود، به خصوص برای مکانهای بزرگ، پارکها یا ساختمانهایی با ورودیهای متعدد. نتیجه ممکن است به نزدیکترین بخش جاده متصل شود، که ممکن است راحتترین یا صحیحترین نقطه دسترسی نباشد.
گزینههای پیشرفتهی نقاط مسیر با فراهم کردن امکان ارائهی زمینهی بیشتر، این مشکل را برطرف میکنند.
استفاده از توکن نقطه ناوبری
برای دقیقترین مسیریابی به نقاط دسترسی خاص مانند ورودیها، اسکلههای بارگیری یا مناطق تعیینشده برای تحویل گرفتن بار، میتوانید از navigationPointToken استفاده کنید.
این توکن با فراخوانی متد Destinations از API مربوط به Geocoding به دست میآید. این توکن نشاندهندهی یک نقطهی ناوبری خاص و قابل مسیریابی مرتبط با یک مکان است.
برای مشخص کردن یک توکن نقطه ناوبری:
یک
navigationPointTokenاز متد Destinations از پاسخ Geocoding API دریافت کنید.هنگام ایجاد یک
GMSNavigationWaypointآنnavigationPointTokenمشخص کنید.
توجه: شما نمیتوانید همزمان یک توکن نقطه ناوبری را به همراه یک مکان و PlaceID مشخص کنید.
سویفت
// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3.."
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
هدف-سی
GMSNavigationWaypoint *waypointTwo = [[GMSNavigationWaypoint alloc] initWithNavigationPointToek:@"sampleNavigationPointToken"
از توکنهای نقاط ناوبری و توکنهای مسیر استفاده کنید
شما میتوانید یک توکن نقطه ناوبری را از طریق API Geocoding بازیابی کنید، یک توکن مسیر را از API Routes بازیابی کنید و سپس هم توکن نقطه ناوبری و هم توکن مسیر را به SDK ناوبری ارسال کنید. این در سناریوهایی مانند اشتراک سفر یا تحویل، که در آن از API Routes برای محاسبه قیمت سفر استفاده میکنید و میخواهید دقت یک توکن نقطه ناوبری را داشته باشید، مفید است.
توکن مسیر، مسیر انتخاب شده توسط SDK ناوبری را به سمت مسیری که برای قیمتگذاری استفاده شده است، متمایل میکند. این امر خطر استفاده از مسیرهای طولانیتر یا کوتاهتر برای سفر را که میتواند "شوکهای قیمتی" ایجاد کند، کاهش میدهد.
برای اطلاعات بیشتر در مورد مشخص کردن یک مکان با استفاده از نشانه نقطه ناوبری و ایجاد یک نشانه مسیر، به مستندات API مسیرها مراجعه کنید. برای یادگیری نحوه برنامهریزی یک مسیر با استفاده از نشانه مسیر، به «برنامهریزی یک مسیر» مراجعه کنید.
این نمودار نشان میدهد که چگونه یک اپلیکیشن همسفری یا تحویل بار میتواند از توکنهای نقطه ناوبری و توکنهای مسیر به طور همزمان استفاده کند:
ترکیب شناسه مکان و موقعیت مکانی
از نسخه ۱۰.۱۰ به بعد، میتوانید هنگام ایجاد یک نقطه مسیر، هم شناسه مکان و هم مختصات مکان را ارائه دهید. این روش زمانی مفید است که میخواهید یک نقطه دقیق (مکان) را مشخص کنید و در عین حال زمینه کلی مکان (شناسه مکان) را نیز ارائه دهید. این به SDK ناوبری اجازه میدهد تا با برجسته کردن ساختمان مقصد یا نشان دادن نقاط مورد علاقه نزدیک مرتبط با شناسه مکان، تجربه ورود غنیتری را ارائه دهد.
سویفت
// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),
placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
هدف-سی
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];
ملاحظات:
وقتی هم placeID و هم location ارائه میدهید:
- این مسیر در درجه اول
locationمشخص شده را هدف قرار میدهد. -
placeIdبه عنوان زمینهای برای بهبود تجربه ورود استفاده میشود. - جایگزینی: اگر SDK تشخیص دهد که
placeIdارائه شده مربوط به یک ویژگی است که ازlocationداده شده خیلی دور است،placeIdنادیده گرفته میشود. در این سناریو، مسیریابی فقط بهlocationادامه مییابد و بهبودهای مربوط به تجربه ورود به مکان خاص در دسترس نخواهند بود.
خلاصهای از پیکربندیهای معتبر نقطه مسیر
| مشخصات | location | placeID | navigationPointToken | رفتار مسیریابی | برجستهسازی مقصد |
|---|---|---|---|---|---|
| فقط مختصات مکان | مجموعه | غایب | غایب | مسیرهای منتهی به نزدیکترین قطعه جاده به مختصات تعریف شده | نشان داده شده است که آیا میتوان مقصد را با اطمینان بالا استنباط کرد یا خیر |
| فقط شناسه مکان | غایب | مجموعه | غایب | مسیرها به نقطه ناوبری پیشفرض برای شناسه مکان | از شناسه مکان |
| فقط توکن نقطه ناوبری | غایب | غایب | مجموعه | مسیرها به نقطه ناوبری دقیق که توسط توکن نشان داده شده است | از مقصد تعریف شده در متد destinations اصلی درخواست Geocoding API |
| مختصات مکان و شناسه مکان با هم ترکیب شدهاند | س | مجموعه | غایب | مسیرهای منتهی به نزدیکترین قطعه جاده به مختصات تعریف شده | از شناسه مکان، اگرچه اگر شناسه مکان از مختصات عرض/طول جغرافیایی خیلی دور باشد، نشان داده نمیشود |