ฟีดข้อมูลแบบเลี้ยวต่อเลี้ยวจะให้ข้อมูลการนำทางเท่านั้นแก่อุปกรณ์ที่ไม่ได้ออกแบบมาเพื่อคำแนะนำการนำทางตามแผนที่ โดยจะแสดงการบังคับทิศทางที่กำลังจะเกิดขึ้นพร้อมองค์ประกอบที่คุณระบุ ดังนี้
- ไอคอน (ซ้าย ขวา ยูเทิร์น)
- หมายเลขทางออกในวงเวียน
- ชื่อถนน
- ระยะทางและเวลาโดยประมาณไปยังขั้นตอนการนำทางถัดไปหรือจุดหมายปลายทาง
คุณสามารถใช้ฟีดแบบเลี้ยวต่อเลี้ยวเพื่อสร้างประสบการณ์ที่ UI ของ Navigation 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
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 ... } } } }
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; ... } } ... }
สถานะการนำทาง
ใช้พร็อพเพอร์ตี้ navState ของ GMSNavigationNavInfo เพื่อดูสถานะปัจจุบันของการนำทาง ซึ่งเป็นสถานะใดสถานะหนึ่งต่อไปนี้
Enroute - สถานะ
GMSNavigationNavStateEnrouteหมายความว่าการนำทางพร้อมคำแนะนำทำงานอยู่และผู้ใช้อยู่ในเส้นทางที่ระบุ มีข้อมูลเกี่ยวกับขั้นตอนการบังคับทิศทางที่กำลังจะเกิดขึ้นการเปลี่ยนเส้นทาง -
GMSNavigationNavStateReroutingหมายความว่ากำลังนำทางอยู่ แต่ระบบกำลังค้นหาเส้นทางใหม่ ขั้นตอนการบังคับทิศทางที่กำลังจะมาถึงไม่พร้อมใช้งาน เนื่องจากยังไม่มีเส้นทางใหม่หยุดแล้ว -
GMSNavigationNavStateStoppedหมายความว่าการนำทางสิ้นสุดแล้ว เช่น การนำทางจะหยุดลงเมื่อผู้ใช้ออกจากการนำทางในแอป ในแอปตัวอย่าง สถานะGMSNavigationNavStateStoppedจะล้างการแสดงข้อมูลการนำทางเพื่อป้องกันไม่ให้แสดงคำแนะนำขั้นตอนที่ค้างอยู่
คำแนะนำช่องทาง
Navigation SDK จะแสดงเลนในการ์ดเลี้ยวของระบบนำทางเป็นออบเจ็กต์ข้อมูล GMSNavigationLane และ GMSNavigationLaneDirection ออบเจ็กต์ GMSNavigationLane แสดงถึงเลนที่เฉพาะเจาะจงระหว่างการนำทาง และมีรายการออบเจ็กต์ GMSNavigationLaneDirection ที่อธิบายการเลี้ยวทั้งหมดที่ทำได้จากเลนนี้
ทิศทางที่แนะนำให้ผู้ขับขี่ใช้ในเลนจะระบุโดยใช้ช่อง recommended

ตัวอย่างคำแนะนำช่องทางเดินรถ
ข้อมูลโค้ดต่อไปนี้แสดงการนำเสนอข้อมูลของเลนที่แสดงในภาพหน้าจอก่อนหน้า
// Lane 1
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 2
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 3
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false}]
// Lane 4
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false},
{/*GMSNavigationLaneShape=*/ GMSNavigationLaneShapeNormalRight, /*recommended=*/ false}]
รูปภาพคำแนะนำช่องทางเดินรถ
Navigation SDK รองรับการสร้างรูปภาพเลนสำหรับแต่ละขั้นตอนการนำทางตามที่ GMSNavigationStepInfo ระบุไว้ ไอคอนเหล่านี้เป็นไปตามคำแนะนำในการปรับขนาดรูปภาพของ CarPlay
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];
การสร้างไอคอนสำหรับการบังคับทิศทาง
![]()
GMSNavigationManeuver enum จะกำหนดการบังคับทิศทางที่เป็นไปได้แต่ละรายการซึ่งอาจเกิดขึ้นขณะนำทาง และคุณสามารถรับการบังคับทิศทางสำหรับขั้นตอนหนึ่งๆ ได้จากพร็อพเพอร์ตี้ maneuver ของ GMSNavigationStepInfo
คุณต้องสร้างไอคอนการบังคับทิศทางและจับคู่กับเส้นทางการบังคับทิศทางที่เกี่ยวข้อง
สำหรับการบังคับทิศทางบางอย่าง คุณสามารถตั้งค่าการแมปแบบหนึ่งต่อหนึ่งกับไอคอนได้ เช่น GMSNavigationManeuverDestinationLeft และ GMSNavigationManeuverDestinationRight อย่างไรก็ตาม เนื่องจากบางท่าทางสัมผัสมีลักษณะร่วมกับท่าทางสัมผัสอื่นๆ คุณจึงอาจต้องแมปท่าทางสัมผัสมากกว่า 1 รายการกับไอคอนเดียว เช่น GMSNavigationManeuverTurnLeft และ GMSNavigationManeuverOnRampLeft อาจแมปกับไอคอนเลี้ยวซ้ายทั้งคู่
การบังคับทิศทางบางอย่างมีป้ายกำกับ "ตามเข็มนาฬิกา" หรือ "ทวนเข็มนาฬิกา" เพิ่มเติม ซึ่ง SDK จะกำหนดตามด้านที่ขับรถของประเทศ ตัวอย่างเช่น ในประเทศที่ขับรถทางด้านซ้ายของถนน ผู้ขับขี่จะใช้ทางวงเวียนหรือกลับรถในทิศทางตามเข็มนาฬิกา ส่วนประเทศที่ขับรถทางด้านขวาของถนนจะใช้ทิศทางทวนเข็มนาฬิกา Navigation SDK จะตรวจจับว่าการบังคับทิศทางเกิดขึ้นในการจราจรทางซ้ายหรือขวา และแสดงผลการบังคับทิศทางที่เหมาะสม ดังนั้น ไอคอนการบังคับทิศทางอาจแตกต่างกันสำหรับการบังคับทิศทางตามเข็มนาฬิกากับทวนเข็มนาฬิกา
ขยายเพื่อดูไอคอนตัวอย่างสำหรับการบังคับทิศทางแบบต่างๆ
| ไอคอนตัวอย่าง | การบังคับทิศทางแบบเลี้ยวต่อเลี้ยว |
|---|---|
![]() |
DEPARTUNKNOWN |
![]() |
STRAIGHTON_RAMP_UNSPECIFIEDOFF_RAMP_UNSPECIFIEDNAME_CHANGE
|
![]() |
TURN_RIGHTON_RAMP_RIGHT
|
![]() |
TURN_LEFTON_RAMP_LEFT
|
![]() |
TURN_SLIGHT_RIGHTON_RAMP_SLIGHT_RIGHTOFF_RAMP_SLIGHT_RIGHT
|
![]() |
TURN_SLIGHT_LEFTON_RAMP_SLIGHT_LEFTOFF_RAMP_SLIGHT_LEFT
|
![]() |
TURN_SHARP_RIGHTON_RAMP_SHARP_RIGHTOFF_RAMP_SHARP_RIGHT
|
![]() |
TURN_SHARP_LEFTON_RAMP_SHARP_LEFTOFF_RAMP_SHARP_LEFT
|
![]() |
TURN_U_TURN_COUNTERCLOCKWISEON_RAMP_U_TURN_COUNTERCLOCKWISEOFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
![]() |
TURN_U_TURN_CLOCKWISEON_RAMP_U_TURN_CLOCKWISEOFF_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_RIGHTOFF_RAMP_RIGHT
|
![]() |
MERGE_LEFTOFF_RAMP_LEFT
|
![]() |
FORK_RIGHTTURN_KEEP_RIGHTON_RAMP_KEEP_RIGHTOFF_RAMP_KEEP_RIGHT
|
![]() |
FORK_LEFTTURN_KEEP_LEFTON_RAMP_KEEP_LEFTOFF_RAMP_KEEP_LEFT
|
![]() |
MERGE_UNSPECIFIED
|
![]() |
DESTINATION
|
![]() |
DESTINATION_RIGHT
|
![]() |
DESTINATION_LEFT
|
![]() |
FERRY_BOAT
|
![]() |
FERRY_TRAIN
|
ใช้ไอคอนที่สร้างขึ้น
Navigation SDK รองรับการสร้างไอคอนการบังคับทิศทางสำหรับ GMSNavigationStepInfo ที่ระบุ ไอคอนเหล่านี้เป็นไปตามคำแนะนำเกี่ยวกับขนาดรูปภาพของ CarPlay
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];







































