การนำทางที่กำหนดเองคืออะไร

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

ประสบการณ์การนำทางที่กำหนดเองคืออะไร

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

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

  • การนำทางที่ใช้งานอยู่ - คุณระบุ ต่อไปนี้เป็นความแตกต่างที่สำคัญอีกประการระหว่างประสบการณ์การนำทาง ที่ Google มีให้และประสบการณ์การนำทางที่กำหนดเอง คุณสามารถเปิดใช้ฟีดแบบเลี้ยวต่อเลี้ยวและใช้เครื่องจัดการเหตุการณ์ผ่าน GMSNavigatorListener แทนการส่งคำแนะนำให้ตัวจัดการเหตุการณ์ในตัวของ Navigation SDK วิธีนี้ช่วยให้ประสบการณ์การใช้งานตอบสนองต่อเหตุการณ์ที่อธิบายไว้ในฟังเหตุการณ์การนําทาง

  • สิ้นสุดการนำทาง - ระบุ เช่นเดียวกับประสบการณ์การนำทางของ Google การนำทางที่กำหนดเองจะกำหนดให้คุณต้องสิ้นสุดการนำทางในลักษณะที่เหมาะกับประสบการณ์การใช้งานของแอปมากที่สุด

ตารางต่อไปนี้จะอธิบายสถานการณ์การนำทางที่กำหนดเอง

สถานการณ์ตัวอย่าง

ขั้นตอนระดับสูง

คุณต้องให้คําแนะนําเกี่ยวกับผู้ขับขี่แบบข้อความเท่านั้นสําหรับอุปกรณ์ขนาดเล็ก เช่น ยานพาหนะ 2 ล้อ

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

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

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

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

ตั้งค่าตัวนำทาง กำหนดจุดหมายและรับการอัปเดตตำแหน่ง ผสานรวม SDK ของ Driver กับแอปของคุณ โปรดดูรายละเอียดที่การเริ่มต้นใช้งาน SDK ไดรเวอร์สำหรับการโดยสารและการนำส่งแบบออนดีมานด์หรือ Last Mile Fleet Solution

สร้างคำแนะนำที่กำหนดเอง

ส่วนนี้จะครอบคลุมขั้นตอนระดับสูงที่คุณปฏิบัติตามเพื่อสร้างคำแนะนำที่กำหนดเอง

กระบวนการนี้จะแตกต่างจากกระบวนการที่อธิบายไว้ในการไปยังส่วนต่างๆ ของเส้นทาง ดังนี้

  • คุณต้องสร้างเซสชันการนำทางด้วยตัวเองก่อน แล้วรับอินสแตนซ์ตัวนำทางผ่านเซสชันแทนการเรียกตัวควบคุมมุมมอง
  • คุณตั้งค่า Listener เหตุการณ์ให้ตอบสนองและจัดการเหตุการณ์การนำทาง

  1. สร้างเซสชันการนำทางโดยใช้ GMSNavigationService.createNavigationSession และเริ่มการนำทางด้วยการโทร setDestination ขณะที่ประสบการณ์การนำทางของ Google เรียกใช้ตัวนำทางผ่านมุมมองแผนที่การนำทาง GMSNavigationServices จะควบคุมและรับสตรีมของเหตุการณ์จากเซสชันการนำทางโดยไม่พึ่งพิงจากอินสแตนซ์ UI ซึ่งหมายความว่าเบราว์เซอร์นี้ทำงานได้โดยไม่ต้องใช้ UI หรือส่งต่อไปที่ประสบการณ์แบบ UI ใดก็ได้ ด้วยวิธีนี้ เซสชันการนำทางจะยังคงทำงานต่อไปในแอปจนกว่าจะมีการนำข้อมูลอ้างอิงสุดท้ายออกจากแอป
  2. กำหนดผู้ให้บริการตำแหน่งที่ได้จากการใช้ถนน ใช้ผู้ให้บริการตำแหน่งหากต้องการให้แอปตรวจสอบตำแหน่งอย่างต่อเนื่อง เช่น เมื่อแสดงมุมมองการนำทางที่มีจุดสีน้ำเงินระหว่างเส้นทาง
  3. ตั้งค่า Listener สำหรับคำแนะนำแบบเลี้ยวต่อเลี้ยวโดยละเอียดโดยใช้โปรโตคอล GMSNavigatorListener จากนั้นจึงแปลงข้อมูลดังกล่าวเป็นอะไรก็ได้ ที่จำเป็นสำหรับประสบการณ์การนำทางที่กำหนดเอง เช่น
    1. ใช้ช่องที่มีข้อความเท่านั้นสำหรับการแคสต์หน้าจอเส้นทางอย่างง่าย
    2. ออกแบบและป้อนข้อมูลในช่องสำหรับ UI ของคุณเอง
  4. ตั้งค่าเครื่องจำลองการนำทาง กระบวนการนี้สำคัญต่อการพัฒนาและ การทดสอบ

สร้างเซสชันการนำทางอิสระ

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

// 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`];