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