เปิดใช้ฟีดข้อมูลแบบเลี้ยวต่อเลี้ยว

ฟีดข้อมูลแบบเลี้ยวต่อเลี้ยวจะให้ข้อมูลการนำทางเท่านั้นแก่อุปกรณ์ที่ไม่ได้ออกแบบมาสำหรับคำแนะนำการนำทางตามแผนที่ โดยมีองค์ประกอบที่ จัดเตรียมไว้ให้ในเร็วๆ นี้

  • ไอคอน (ซ้าย ขวา กลับรถ)
  • เปิดเลขในวงเวียน
  • ชื่อถนน
  • ระยะทางและเวลาโดยประมาณไปยังขั้นตอนการนำทางถัดไปหรือ จุดหมายสุดท้าย

คุณสามารถใช้ฟีดแบบเลี้ยวต่อเลี้ยวเพื่อสร้างประสบการณ์ที่ UI การนำทาง SDK แบบเต็มไม่เหมาะสม เช่น สำหรับหน้าจอขนาดเล็ก ตัวอย่างเช่น คุณอาจใช้ตัวเลือกนี้สำหรับผู้ขับขี่ยานพาหนะ 2 ล้อ ซึ่งคุณสามารถแสดงคำแนะนำการนำทางเท่านั้น เพื่อช่วยให้พวกเขาไปถึงจุดหมายได้เร็วขึ้นและมั่นใจมากขึ้นโดยที่มีสิ่งรบกวนน้อยที่สุด

องค์ประกอบการแสดงการนำทางที่สำคัญ

หน้าจออุปกรณ์เคลื่อนที่แสดงทางเลี้ยวซ้ายที่กำลังจะมาถึงในอีก 100 ฟุตเพื่อเข้าสู่ถนน W Ahwanee Ave ที่ด้านล่างของหน้าจอ เหลือเวลาอีก 46 นาทีและระยะทางยังเหลืออีก 39 ไมล์

ช่องหลักสำหรับการนำทางแต่ละขั้นตอนคือชื่อถนนแบบเต็ม การขับขี่ และระยะทางทั้งหมดของขั้นตอน ซึ่งดูได้ใน GMSNavigationStepInfo

สำหรับการเดินทางโดยรวม คุณอาจต้องการแสดงเวลาและระยะทางที่เหลือของขั้นตอนปัจจุบันหรือไปยังปลายทาง ซึ่งทั้งหมดมีอยู่ใน GMSNavigationNavInfo รูปภาพทางด้านขวาจะแสดงตัวอย่างองค์ประกอบการนำทางที่สำคัญเหล่านี้

ตั้งค่า Listener เหตุการณ์

หากต้องการใช้ข้อมูลการนำทางเท่านั้น คุณต้องใช้ Listener เหตุการณ์สำหรับเหตุการณ์ didChangeNavInfo ภายใน Listener เหตุการณ์ ให้เข้าถึงข้อมูลการเดินทางและ ขั้นตอนเพื่อให้ข้อมูลการนำทางแบบเลี้ยวต่อเลี้ยวแก่ผู้ใช้

หากต้องการใช้เครื่องจัดการเหตุการณ์ ตัวควบคุมมุมมองของแมปต้องใช้โปรโตคอล GMSNavigatorListener สำหรับข้อมูลโดยละเอียดเกี่ยวกับการจัดการเหตุการณ์ใน Navigation SDK สำหรับ iOS โปรดดูฟังเหตุการณ์การนำทาง

การจัดการเหตุการณ์ DidChangeNavInfo

สร้าง Listener สำหรับเหตุการณ์ didChangeNavInfo เพื่อเพิ่มการรองรับแบบเลี้ยวต่อเลี้ยวลงในแอป ใน Listener เหตุการณ์ ให้ใช้คลาสและ enum ต่อไปนี้เพื่อควบคุมการนำทางแบบเลี้ยวต่อเลี้ยว

  • GMSNavigationNavInfo — ชั้นเรียนกำหนดข้อมูลเกี่ยวกับสถานะของการนำทาง

  • GMSNavigationStepInfo — ชั้นเรียนกำหนดข้อมูลเกี่ยวกับขั้นตอนเดียวในเส้นทางการนำทาง

  • GMSNavigationNavState - Enum ที่กําหนดสถานะปัจจุบันของการนําทาง เช่น อยู่ระหว่างกําหนดเส้นทาง เปลี่ยนเส้นทาง หรือหยุด

  • GMSNavigationDrivingSide — Enum ระบุว่าขั้นตอนนี้อยู่ในเส้นทางไดรฟ์ขวาหรือไดรฟ์ซ้าย

  • GMSNavigationManeuver — Enum ที่กําหนดการดําเนินการการนําทาง เช่น เลี้ยวซ้ายหรือเลี้ยวขวา

ด้านล่างนี้คือตัวอย่าง Listener เหตุการณ์สำหรับเหตุการณ์ didChangeNavInfo

Objective-C

  // 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;
        ...
      }
    }
    ...
  }

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
          ...
        }
      }
    }
  }

ใช้พร็อพเพอร์ตี้ navState ของ GMSNavigationNavInfo เพื่อรับสถานะปัจจุบันของการนำทาง ซึ่งมีดังนี้

  • เส้นทาง - สถานะ GMSNavigationNavStateEnroute หมายความว่าการนำทางที่มีคำแนะนำเปิดใช้งานอยู่ในขณะนี้ และผู้ใช้อยู่ในเส้นทางที่ให้ไว้ มีข้อมูลเกี่ยวกับขั้นตอนการบังคับทิศทางที่กำลังจะเกิดขึ้นในปัจจุบัน

  • กำลังเปลี่ยนเส้นทาง - GMSNavigationNavStateRerouting หมายความว่าการนำทางอยู่ระหว่างดำเนินการ แต่การนำทางกำลังมองหาเส้นทางใหม่ ขั้นตอนการบังคับทิศทางที่กำลังจะมาถึงไม่พร้อมใช้งาน เพราะยังไม่มีเส้นทางใหม่

  • หยุด - GMSNavigationNavStateStopped หมายความว่าการนำทางสิ้นสุดแล้ว ตัวอย่างเช่น การนำทางจะหยุดเมื่อผู้ใช้ออกจากการนำทางในแอป ในแอปตัวอย่าง สถานะ GMSNavigationNavStateStopped จะล้างการแสดงข้อมูลการนำทางเพื่อป้องกันไม่ให้มีการแสดงวิธีการของขั้นตอนค้างไว้

การสร้างไอคอนสำหรับการบังคับทิศทาง

enum ของ GMSNavigationManeuver จะระบุการเคลื่อนที่ที่เป็นไปได้ขณะนำทาง และคุณสามารถรับการนำทางสำหรับขั้นตอนหนึ่งๆ ได้จากพร็อพเพอร์ตี้ maneuver ของ GMSNavigationStepInfo

คุณต้องสร้างไอคอนบังคับและจับคู่กับเครื่องมือที่เกี่ยวข้อง ในบางวิธี คุณยังตั้งค่าการจับคู่แบบหนึ่งต่อหนึ่งกับไอคอนได้ เช่น GMSNavigationManeuverDestinationLeft และ GMSNavigationManeuverDestinationRight แต่เนื่องจากการใช้วิธีการบางอย่างมีลักษณะเดียวกันกับเครื่องมือนำทางอื่นๆ คุณจึงอาจต้องแมปการเคลื่อนที่มากกว่า 1 ทิศทางกับไอคอนเดียว ตัวอย่างเช่น GMSNavigationManeuverTurnLeft และ GMSNavigationManeuverOnRampLeft สามารถจับคู่กับไอคอนเลี้ยวซ้ายได้

การดำเนินการบางประเภทจะมีป้ายกำกับ "ตามเข็มนาฬิกา" หรือ "ทวนเข็มนาฬิกา" เพิ่มเติม ซึ่ง SDK กำหนดตามฝั่งขับรถของประเทศนั้นๆ ตัวอย่างเช่น ในประเทศที่การขับรถบนถนนสายซ้าย ผู้ขับจะวงเวียนหรือกลับรถในทิศทางตามเข็มนาฬิกา ขณะที่ประเทศที่อยู่ด้านขวาสุดถนนจะหมุนทวนเข็มนาฬิกา Navigation SDK จะตรวจจับว่าการขับขี่เกิดขึ้นในการรับส่งข้อมูลด้านซ้ายหรือด้านขวา และเอาต์พุตที่เหมาะสม ดังนั้น ไอคอนเคลื่อนที่จึงแตกต่างกัน ในการเดินตามเข็มนาฬิกาหรือทวนเข็มนาฬิกา

ขยายเพื่อดูตัวอย่างไอคอนสำหรับการบังคับแบบต่างๆ

ไอคอนตัวอย่าง การขับขี่แบบเลี้ยวต่อเลี้ยว
DEPART
UNKNOWN
STRAIGHT
ON_RAMP_UNSPECIFIED
OFF_RAMP_UNSPECIFIED
NAME_CHANGE
TURN_RIGHT
ON_RAMP_RIGHT
TURN_LEFT
ON_RAMP_LEFT
TURN_SLIGHT_RIGHT
ON_RAMP_SLIGHT_RIGHT
OFF_RAMP_SLIGHT_RIGHT
TURN_SLIGHT_LEFT
ON_RAMP_SLIGHT_LEFT
OFF_RAMP_SLIGHT_LEFT
TURN_SHARP_RIGHT
ON_RAMP_SHARP_RIGHT
OFF_RAMP_SHARP_RIGHT
TURN_SHARP_LEFT
ON_RAMP_SHARP_LEFT
OFF_RAMP_SHARP_LEFT
TURN_U_TURN_COUNTERCLOCKWISE
ON_RAMP_U_TURN_COUNTERCLOCKWISE
OFF_RAMP_U_TURN_COUNTERCLOCKWISE
TURN_U_TURN_CLOCKWISE
ON_RAMP_U_TURN_CLOCKWISE
OFF_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_RIGHT
OFF_RAMP_RIGHT
MERGE_LEFT
OFF_RAMP_LEFT
FORK_RIGHT
TURN_KEEP_RIGHT
ON_RAMP_KEEP_RIGHT
OFF_RAMP_KEEP_RIGHT
FORK_LEFT
TURN_KEEP_LEFT
ON_RAMP_KEEP_LEFT
OFF_RAMP_KEEP_LEFT
MERGE_UNSPECIFIED
DESTINATION
DESTINATION_RIGHT
DESTINATION_LEFT
FERRY_BOAT
FERRY_TRAIN