مسیر به نقاط ناوبری

کیت توسعه نرم‌افزاری ناوبری (Navigation SDK) برای iOS روش‌های پیشرفته‌ای برای تعیین نقاط مسیر یا نقاط ناوبری ارائه می‌دهد که مسیریابی دقیق‌تر و تجربه رسیدن بهتری را، به ویژه برای مقاصدی با ورودی‌های متعدد یا نقاط ناوبری خاص، فراهم می‌کند. می‌توانید با استفاده از یک navigationPointToken ، که رشته‌ای است که یک مکان و زمینه مسیر اضافی را رمزگذاری می‌کند، به مکان‌های دقیق مسیریابی کنید. همچنین می‌توانید مختصات طول و عرض جغرافیایی را با یک شناسه مکان (Place ID) برای زمینه بیشتر ترکیب کنید.

پیشینه

قبل از نسخه ۱۰.۱۰، می‌توانستید یک Waypoint با استفاده از مختصات مکان یا شناسه مکان تعریف کنید. اگرچه گاهی اوقات مؤثر است، اما مسیریابی صرفاً بر اساس طول و عرض جغرافیایی می‌تواند گاهی اوقات منجر به نقاط سوار یا پیاده شدن نامناسب شود، به خصوص برای مکان‌های بزرگ، پارک‌ها یا ساختمان‌هایی با ورودی‌های متعدد. نتیجه ممکن است به نزدیکترین بخش جاده متصل شود، که ممکن است راحت‌ترین یا صحیح‌ترین نقطه دسترسی نباشد.

گزینه‌های پیشرفته‌ی نقاط مسیر با فراهم کردن امکان ارائه‌ی زمینه‌ی بیشتر، این مشکل را برطرف می‌کنند.

استفاده از توکن نقطه ناوبری

برای دقیق‌ترین مسیریابی به نقاط دسترسی خاص مانند ورودی‌ها، اسکله‌های بارگیری یا مناطق تعیین‌شده برای تحویل گرفتن بار، می‌توانید از navigationPointToken استفاده کنید.

این توکن با فراخوانی متد Destinations از API مربوط به Geocoding به دست می‌آید. این توکن نشان‌دهنده‌ی یک نقطه‌ی ناوبری خاص و قابل مسیریابی مرتبط با یک مکان است.

برای مشخص کردن یک توکن نقطه ناوبری:

  1. یک navigationPointToken از متد Destinations از پاسخ Geocoding API دریافت کنید.

  2. هنگام ایجاد یک 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
مختصات مکان و شناسه مکان با هم ترکیب شده‌اند س مجموعه غایب مسیرهای منتهی به نزدیکترین قطعه جاده به مختصات تعریف شده از شناسه مکان، اگرچه اگر شناسه مکان از مختصات عرض/طول جغرافیایی خیلی دور باشد، نشان داده نمی‌شود