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

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

پیشینه

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

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

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

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

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

  1. یک navigationPointToken از متد Destinations از پاسخ Geocoding API دریافت کنید.
  2. با استفاده از متد setNavigationPointToken() در سازنده، یک Waypoint ایجاد کنید.

نکته: هنگام استفاده از setNavigationPointToken() ، نمی‌توانید همزمان setLatLng() یا setPlaceIdString() استفاده کنید. این متدها با setNavigationPointToken() ناسازگار هستند.

// Assuming 'navPointToken' is a String obtained from the destinations method of the Geocoding API
// Assuming 'destinationName' is a String title for the waypoint

Waypoint waypointWithToken = Waypoint.builder()
    .setTitle(destinationName)
    .setNavigationPointToken(navPointToken)
    .build();

// Use this waypoint in navigator.setDestinations()

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

شما می‌توانید یک توکن نقطه ناوبری را از طریق API Geocoding بازیابی کنید، یک توکن مسیر را از API Routes بازیابی کنید و سپس هم توکن نقطه ناوبری و هم توکن مسیر را به SDK ناوبری ارسال کنید. این در سناریوهایی مانند اشتراک سفر یا تحویل، که در آن از API Routes برای محاسبه قیمت سفر استفاده می‌کنید و می‌خواهید دقت یک توکن نقطه ناوبری را داشته باشید، مفید است.

توکن مسیر، مسیر انتخاب شده توسط SDK ناوبری را به سمت مسیری که برای قیمت‌گذاری استفاده شده است، متمایل می‌کند. این امر خطر استفاده از مسیرهای طولانی‌تر یا کوتاه‌تر برای سفر را که می‌تواند "شوک‌های قیمتی" ایجاد کند، کاهش می‌دهد.

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

این نمودار نشان می‌دهد که چگونه یک اپلیکیشن هم‌سفری یا تحویل بار می‌تواند از توکن‌های نقطه ناوبری و توکن‌های مسیر به طور همزمان استفاده کند:

نمودار مورد استفاده در سرویس اشتراک خودرو یا تحویل در محل
نمودار مورد استفاده از سرویس اشتراک خودرو یا تحویل بار

ترکیب شناسه مکان و طول و عرض جغرافیایی

از نسخه ۷.۴ به بعد، می‌توانید هنگام ایجاد یک Waypoint هم شناسه مکان و هم مختصات طول و عرض جغرافیایی را ارائه دهید. این روش زمانی مفید است که می‌خواهید یک نقطه دقیق (عرض/طول جغرافیایی) را مشخص کنید و در عین حال زمینه کلی مکان (شناسه مکان) را نیز ارائه دهید. این به SDK ناوبری اجازه می‌دهد تا با برجسته کردن ساختمان مقصد یا نشان دادن نقاط مورد علاقه نزدیک مرتبط با شناسه مکان، تجربه ورود غنی‌تری را ارائه دهد.

// Assuming 'placeId' is the Place ID String
// Assuming 'lat' and 'lng' are the double values for latitude and longitude
// Assuming 'destinationName' is a String title for the waypoint

Waypoint waypointWithPlaceIdAndLatLng = Waypoint.builder()
    .setTitle(destinationName)
    .setPlaceIdString(placeId)
    .setLatLng(lat, lng)
    .build();

// Use this waypoint in navigator.setDestinations()

ملاحظات

وقتی هم placeId و هم latlng را ارائه می‌دهید:

  • این مسیر در درجه اول latlng مشخص شده را هدف قرار می‌دهد.
  • placeId به عنوان زمینه‌ای برای بهبود تجربه ورود استفاده می‌شود.
  • جایگزینی: اگر SDK تشخیص دهد که placeId ارائه شده مربوط به ویژگی‌ای است که از latlng داده شده خیلی دور است، placeId نادیده گرفته می‌شود. در این سناریو، مسیریابی فقط به latlng ادامه می‌یابد و بهبودهای مربوط به تجربه ورود مختص به مکان در دسترس نخواهند بود.

خلاصه‌ای از پیکربندی‌های معتبر نقطه مسیر

روش setLatLng() setPlaceIdString() setNavigationPointToken() رفتار مسیریابی برجسته‌سازی مقصد
فقط مختصات عرض/طول جغرافیایی مجموعه غایب غایب مسیرهای منتهی به نزدیکترین قطعه جاده به مختصات تعریف شده نشان داده شده است که آیا می‌توان مقصد را با اطمینان بالا استنباط کرد یا خیر
فقط شناسه مکان غایب مجموعه غایب مسیرها به نقطه ناوبری پیش‌فرض برای شناسه مکان از شناسه مکان
فقط توکن نقطه ناوبری غایب غایب مجموعه مسیرها به نقطه ناوبری دقیق که توسط توکن نشان داده شده است از مقصد تعریف شده در متد destinations اصلی درخواست Geocoding API
مختصات طول و عرض جغرافیایی و شناسه مکان با هم ترکیب شده‌اند مجموعه مجموعه غایب مسیرهای منتهی به نزدیکترین قطعه جاده به مختصات تعریف شده از شناسه مکان، اگرچه اگر شناسه مکان از مختصات عرض/طول جغرافیایی خیلی دور باشد، نشان داده نمی‌شود