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

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

پس‌زمینه

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

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

استفاده از کد نقطه پیمایش

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

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

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

  1. یک navigationPointToken از پاسخ روش SearchDestinations Geocoding API دریافت کنید.

  2. وقتی GMSNavigationWaypoint ایجاد می‌کنی، navigationPointToken را مشخص کن.

Swift

// 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] initWithNavigationPointToken:@"sampleNavigationPointToken"
                                                          title:@"Sydney Opera House"];

استفاده از نشان‌های نقطه پیمایش و نشان‌های مسیر

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

بااستفاده از کد مسیر، Navigation SDK ناوبری را در همان مسیری که برای محاسبه قیمت استفاده کرده‌اید شروع می‌کند. این کار خطر استفاده از مسیرهای طولانی‌تر یا کوتاه‌تر را برای سفر کاهش می‌دهد، که می‌تواند باعث «شوک قیمت» شود.

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

نمودار زیر نشان می‌دهد که چگونه یک برنامه هم‌سفری یا تحویل از توکن‌های نقطه پیمایش و توکن‌های مسیر با هم استفاده می‌کند. از نسخه ۱۱.۳، برنامه راننده فقط توکن مسیر را در مرحله ۷ به Navigation SDK ارسال می‌کند.

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

ترکیب شناسه جا و مکان

از نسخه ۱۰.۱۰، می‌توانید هم شناسه مکان و هم مختصات مکان را هنگام ایجاد نقطه‌مسیر ارائه دهید. این روش زمانی مفید است که می‌خواهید نقطه دقیقی (مکان) را مشخص کنید و درعین‌حال بافت کلی مکان (شناسه مکان) را نیز ارائه دهید. این کار به Navigation SDK امکان می‌دهد تا با برجسته کردن ساختمان مقصد یا نشان دادن نقاط جالب اطراف مرتبط با «شناسه مکان»، تجربه ورود غنی‌تری ارائه دهد.

Swift

// 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 بافتی ارائه می‌دهد که تجربه رسیدن را بهبود می‌بخشد.
  • جایگزین: اگر کیت توسعه نرم‌افزار تشخیص دهد که placeID ارائه‌شده با ویژگی‌ای مطابقت دارد که از location داده‌شده خیلی دور است، placeID را نادیده می‌گیرد. در این سناریو، مسیریابی فقط به location ادامه می‌یابد و بهبودهای تجربه ورود مختص مکان دردسترس نیست.

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

مشخصات location placeID navigationPointToken رفتار مسیریابی برجسته کردن مقصد
فقط مختصات مکان تنظیم غایب غایب مسیرهای منتهی به بخش جاده‌ای که به مختصات تعریف‌شده نزدیک‌تر است اگر مقصد با اطمینان بالا قابل‌استنباط باشد نشان داده می‌شود
فقط شناسه جا غایب تنظیم غایب مسیرهای منتهی به نقطه پیمایش پیش‌فرض برای «شناسه مکان» از شناسه جا
فقط کد نقطه ناوبری غایب غایب تنظیم مسیرهای منتهی به نقطه دقیق پیمایش که با کد نشان داده شده است از مقصد تعریف‌شده در روش اصلی مقصدها در درخواست Geocoding API
مختصات مکان و شناسه جا باهم ترکیب شده است تنظیم تنظیم غایب مسیرهای منتهی به بخش جاده‌ای که به مختصات تعریف‌شده نزدیک‌تر است از شناسه مکان، هرچند اگر شناسه مکان خیلی از مختصات عرض جغرافیایی/طول جغرافیایی دور باشد نشان داده نمی‌شود