ประสบการณ์การนำทางที่กำหนดเองอาจหมายถึงอะไรก็ได้ ตั้งแต่แอปที่ช่วยกำจัดคำแนะนำการเลี้ยวโดยสิ้นเชิง โดยใช้การนำทางเป็นกระบวนการเบื้องหลังเท่านั้น ไปจนถึงแอปที่แสดงคำแนะนำที่มีการปรับแต่งอย่างละเอียดไปยังหน้าจอแยกจากอุปกรณ์ที่เรียกใช้ตัวนำทาง
ประสบการณ์การนำทางที่กำหนดเองคืออะไร
เริ่มการนำทาง - คุณสร้างเซสชันการนำทาง ประสบการณ์การนำทางที่กำหนดเองยังคงเกี่ยวข้องกับการสร้างอินสแตนซ์การนำทางและการตั้งค่าปลายทาง เช่นเดียวกับประสบการณ์การนำทางของ Google อย่างไรก็ตาม ด้วยประสบการณ์การนำทางที่ปรับแต่งแล้ว คุณจะทำได้โดยสร้างเซสชันการนำทางก่อนโดยใช้
GMSNavigationServices
เซสชันการนำทางเป็นออบเจ็กต์ที่ไม่ใช่ UI ที่คำนึงถึงสถานะ ซึ่งสามารถดำเนินการได้ด้วยตัวควบคุมมุมมองหรือไม่มีดูการสาธิต: การดาวน์โหลด Navigation SDK มีการสาธิตที่คุณเรียกใช้ได้เพื่อดูตัวอย่างประสบการณ์การนำทางที่สลับระหว่างคำแนะนำแบบเลี้ยวต่อเลี้ยวผ่านการนำทางแบบมาตรฐานไปยังประสบการณ์การนำทาง ซึ่งแสดงเฉพาะตำแหน่งของอุปกรณ์ที่เคลื่อนที่ไปตามเส้นประกอบถนน
การนำทางที่ใช้งานอยู่ - คุณระบุ ต่อไปนี้เป็นความแตกต่างที่สำคัญอีกประการระหว่างประสบการณ์การนำทาง ที่ Google มีให้และประสบการณ์การนำทางที่กำหนดเอง คุณสามารถเปิดใช้ฟีดแบบเลี้ยวต่อเลี้ยวและใช้เครื่องจัดการเหตุการณ์ผ่าน
GMSNavigatorListener
แทนการส่งคำแนะนำให้ตัวจัดการเหตุการณ์ในตัวของ Navigation SDK วิธีนี้ช่วยให้ประสบการณ์การใช้งานตอบสนองต่อเหตุการณ์ที่อธิบายไว้ในฟังเหตุการณ์การนําทางสิ้นสุดการนำทาง - ระบุ เช่นเดียวกับประสบการณ์การนำทางของ Google การนำทางที่กำหนดเองจะกำหนดให้คุณต้องสิ้นสุดการนำทางในลักษณะที่เหมาะกับประสบการณ์การใช้งานของแอปมากที่สุด
ตารางต่อไปนี้จะอธิบายสถานการณ์การนำทางที่กำหนดเอง
สถานการณ์ตัวอย่าง |
ขั้นตอนระดับสูง |
---|---|
คุณต้องให้คําแนะนําเกี่ยวกับผู้ขับขี่แบบข้อความเท่านั้นสําหรับอุปกรณ์ขนาดเล็ก เช่น ยานพาหนะ 2 ล้อ |
สร้างเครื่องมือนำทางและตั้งค่าคำแนะนำแบบเลี้ยวต่อเลี้ยวเป็นฟีดข้อมูลไปยังอุปกรณ์หน้าจอขนาดเล็กในขณะที่ตัวนำทางจะทำงานบนโทรศัพท์มือถือของผู้ขับนอกมุมมองทันที โปรดดูเปิดใช้ฟีดข้อมูลแบบเลี้ยวต่อเลี้ยว |
คนขับที่ใช้แอปของคุณต้องการแผนที่ภาพรวมตลอดการเดินทางส่วนใหญ่ โดยมีคำแนะนำแบบเลี้ยวต่อเลี้ยวเพียงเล็กน้อยสำหรับถนนในเมือง |
แอปควรอนุญาตให้ผู้ขับขี่เข้าและออกจากประสบการณ์การนำทางของ Google ได้ตามต้องการ โดยไม่ต้องสลับการตั้งค่าของการนำทางสำหรับโหมดจุดหมายและการเดินทาง |
สำหรับลูกค้าบริการอุปกรณ์เคลื่อนที่: พนักงานขับรถมักจะเดินทางตามเส้นทางที่กำหนดไว้โดยมีความคุ้นเคยอยู่แล้ว และไม่จำเป็นต้องมีคำแนะนำใดๆ เลย เพียงแต่คุณต้องหาวิธีทำให้ระบบการจัดการรถสามารถจัดการการจัดส่งหรือการเดินทางได้ |
ตั้งค่าตัวนำทาง กำหนดจุดหมายและรับการอัปเดตตำแหน่ง ผสานรวม SDK ของ Driver กับแอปของคุณ โปรดดูรายละเอียดที่การเริ่มต้นใช้งาน SDK ไดรเวอร์สำหรับการโดยสารและการนำส่งแบบออนดีมานด์หรือ Last Mile Fleet Solution |
สร้างคำแนะนำที่กำหนดเอง
ส่วนนี้จะครอบคลุมขั้นตอนระดับสูงที่คุณปฏิบัติตามเพื่อสร้างคำแนะนำที่กำหนดเอง
กระบวนการนี้จะแตกต่างจากกระบวนการที่อธิบายไว้ในการไปยังส่วนต่างๆ ของเส้นทาง ดังนี้
- คุณต้องสร้างเซสชันการนำทางด้วยตัวเองก่อน แล้วรับอินสแตนซ์ตัวนำทางผ่านเซสชันแทนการเรียกตัวควบคุมมุมมอง
- คุณตั้งค่า Listener เหตุการณ์ให้ตอบสนองและจัดการเหตุการณ์การนำทาง
- สร้างเซสชันการนำทางโดยใช้
GMSNavigationService.createNavigationSession
และเริ่มการนำทางด้วยการโทรsetDestination
ขณะที่ประสบการณ์การนำทางของ Google เรียกใช้ตัวนำทางผ่านมุมมองแผนที่การนำทางGMSNavigationServices
จะควบคุมและรับสตรีมของเหตุการณ์จากเซสชันการนำทางโดยไม่พึ่งพิงจากอินสแตนซ์ UI ซึ่งหมายความว่าเบราว์เซอร์นี้ทำงานได้โดยไม่ต้องใช้ UI หรือส่งต่อไปที่ประสบการณ์แบบ UI ใดก็ได้ ด้วยวิธีนี้ เซสชันการนำทางจะยังคงทำงานต่อไปในแอปจนกว่าจะมีการนำข้อมูลอ้างอิงสุดท้ายออกจากแอป - กำหนดผู้ให้บริการตำแหน่งที่ได้จากการใช้ถนน ใช้ผู้ให้บริการตำแหน่งหากต้องการให้แอปตรวจสอบตำแหน่งอย่างต่อเนื่อง เช่น เมื่อแสดงมุมมองการนำทางที่มีจุดสีน้ำเงินระหว่างเส้นทาง
- ตั้งค่า Listener สำหรับคำแนะนำแบบเลี้ยวต่อเลี้ยวโดยละเอียดโดยใช้โปรโตคอล
GMSNavigatorListener
จากนั้นจึงแปลงข้อมูลดังกล่าวเป็นอะไรก็ได้ ที่จำเป็นสำหรับประสบการณ์การนำทางที่กำหนดเอง เช่น- ใช้ช่องที่มีข้อความเท่านั้นสำหรับการแคสต์หน้าจอเส้นทางอย่างง่าย
- ออกแบบและป้อนข้อมูลในช่องสำหรับ UI ของคุณเอง
- ตั้งค่าเครื่องจำลองการนำทาง กระบวนการนี้สำคัญต่อการพัฒนาและ การทดสอบ
สร้างเซสชันการนำทางอิสระ
ข้อมูลโค้ดต่อไปนี้จากเดโมแสดงการนำทางที่สร้างขึ้นอย่างอิสระจากตัวควบคุมมุมมอง จากนั้น โค้ดจะเพิ่มแผนที่ภาพรวม ซึ่งกำหนดค่าให้แสดงตำแหน่งปัจจุบันที่ตัดผ่าน
// Create the navigation session.
_navigationSession = [GMSNavigationServices createNavigationSession];
GMSRoadSnappedLocationProvider *roadSnappedLocationProvider =
_navigationSession.roadSnappedLocationProvider;
[roadSnappedLocationProvider startUpdatingLocation];
GMSNavigator *navigator = _navigationSession.navigator;
[navigator addListener:self];
navigator.voiceGuidance = GMSNavigationVoiceGuidanceSilent;
navigator.sendsBackgroundNotifications = NO;
_navigationSession.started = YES;
[navigator setDestinations:@[ destination ]
callback:^(GMSRouteStatus routeStatus) {
// …handle changes in route status.
}];
// Add an overview map.
_mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
[self.mainStackView addArrangedSubview:_mapView];
[self.mainStackView setNeedsLayout];
_mapView.settings.compassButton = YES;
_mapView.delegate = self;
_mapView.myLocationEnabled = YES;
_mapView.roadSnappedMyLocationSource = roadSnappedLocationProvider;
การส่งผ่านการนำทางจากประสบการณ์ที่กำหนดเองไปยังประสบการณ์การใช้งาน Google
ข้อมูลโค้ดนี้แสดงให้เห็นว่าแอปของคุณช่วยให้ผู้ใช้เข้าสู่ประสบการณ์การนำทางของ Google จากประสบการณ์การนำทางที่กำหนดเองได้อย่างไร ข้อมูลโค้ดนี้ยังแสดงให้เห็นวิธีที่แอปทำการเปลี่ยนแปลงนี้ในขณะที่แชร์แผนที่อีกด้วย
`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];
[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];
`…`
[`_mapView enableNavigationWithSession:_navigationSession`];