บทนำ
Navigation SDK (Nav SDK) มีฟีเจอร์การนำทางแบบเลี้ยวต่อเลี้ยวที่ดีที่สุด ซึ่งเป็นประโยชน์อย่างมากต่อลูกค้าและคนขับ โดยเฉพาะคนขับมือใหม่หรือคนขับที่ไม่คุ้นเคยกับภูมิภาค อย่างไรก็ตาม มีกรณีการใช้งานบางกรณีที่บริษัทไม่ต้องการดึงความสนใจของคนขับออกจากถนนด้วย UI การนำทางแบบเลี้ยวต่อเลี้ยว แต่ยังต้องการติดตามตำแหน่งของยานพาหนะและฟังเหตุการณ์ที่เกี่ยวข้องกับเส้นทางที่ยานพาหนะกำลังวิ่งอยู่ ตัวอย่างเช่น คนขับรถบรรทุก โดยเฉพาะอย่างยิ่งหากกำลังขนส่งวัตถุอันตราย นอกจากนี้ บริษัทอื่นๆ ที่ทำการจัดส่งโดยใช้รูปแบบต่างๆ เช่น การเดินในระยะทางสั้นๆ อาจไม่จำเป็นต้องเปิดใช้การนำทางแบบเลี้ยวต่อเลี้ยว ซึ่งจะช่วยประหยัดแบตเตอรี่ของอุปกรณ์
ขอบเขต
เอกสารนี้อธิบายวิธีที่บริษัทต่างๆ สามารถซ่อนแผนที่การนำทาง (มุมมอง) จาก Nav SDK และยังคงได้รับประโยชน์จากฟีเจอร์ทั้งหมดของ Nav SDK ในส่วนที่เกี่ยวกับการติดตามตำแหน่ง การสมัครรับข้อมูลเหตุการณ์ และการเรียกกลับ ข้อมูลที่รวบรวมจาก Nav SDK ในโหมดไม่มีส่วนหัวสามารถใช้เพื่อปรับปรุงความสามารถในการติดตามยานพาหนะและทำความเข้าใจเวลาถึงโดยประมาณ (ETA) ได้แม่นยำยิ่งขึ้น ซึ่งจะนำไปสู่ความโปร่งใสและประสิทธิภาพในท้ายที่สุด
Navigation SDK
Navigation SDK เป็นไลบรารี Android / iOS แบบเนทีฟที่เพิ่มลงในแอปของคนขับ ในบริบทของการเคลื่อนที่ SDK นี้มีหน้าที่รับผิดชอบสิ่งต่อไปนี้
- รับตำแหน่งที่ปรับให้เข้ากับถนนจากแอปที่เรียกใช้ ตำแหน่งที่ปรับให้เข้ากับถนนมีความแม่นยำมากกว่า FusedLocationProvider (FLP) ของ Android เนื่องจากใช้เครือข่ายถนนของ Google เพื่อปรับตำแหน่งให้เข้ากับส่วนของถนนที่ใกล้ที่สุด ซึ่งทำให้เวลาถึงโดยประมาณและข้อมูลอื่นๆ จาก FLP แม่นยำมากขึ้น
- ประสบการณ์การนำทางแบบเลี้ยวต่อเลี้ยวที่ช่วยให้คนขับเดินทางจากจุด A ไปยังจุด B ได้อย่างมีประสิทธิภาพ โดยคำนึงถึงการจราจรแบบเรียลไทม์และข้อจำกัดอื่นๆ ของเส้นทาง
- ทริกเกอร์เหตุการณ์ตามความคืบหน้าของเส้นทาง ตำแหน่ง ความเร็ว ฯลฯ ผ่าน Listener เหตุการณ์และการเรียกกลับที่ลงทะเบียนไว้
ประสบการณ์ใช้งานเริ่มต้น
เมื่อลูกค้าติดตั้งใช้งาน Nav SDK เราจะถือว่าลูกค้าต้องการฟีเจอร์การนำทางแบบเลี้ยวต่อเลี้ยว ด้วยเหตุนี้ เอกสารประกอบของ Nav SDK (Android และ iOS) จึงมีวิธีการติดตั้งใช้งาน Nav SDK โดยเปิดใช้การนำทางแบบเลี้ยวต่อเลี้ยว
ใน Android การแสดงผลแผนที่การนำทางแบบเลี้ยวต่อเลี้ยวในแอปทำได้โดยใช้ SupportNavigationFragment หรือ NavigationView ส่วนใน iOS จะใช้ GMSMapView องค์ประกอบ UI เหล่านี้จะเพิ่มแผนที่แบบโต้ตอบและ UI การนำทางแบบเลี้ยวต่อเลี้ยวลงในแอป
ในส่วนถัดไป เราจะเปรียบเทียบโค้ด Nav SDK เริ่มต้นที่เปิดใช้การนำทางแบบเลี้ยวต่อเลี้ยวกับโค้ด Nav SDK แบบไม่มีส่วนหัวสำหรับทั้ง Android และ iOS โดยไฮไลต์การเปลี่ยนแปลงที่จำเป็น
โซลูชัน
Android
ใน Android นี่คือโค้ด Java ที่มาพร้อมกับแอปตัวอย่าง Nav SDK
@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Obtain a reference to the NavigationFragment
setContentView(R.layout.activity_nav_fragment);
mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
อย่างที่เห็น มุมมองจะชี้ไปยังเลย์เอาต์ที่ควรใช้เพื่อวาดประสบการณ์การนำทาง และในกรณีนี้ ระบบจะสร้าง SupportNavigationFragment แทน NavigationView
หากต้องการให้ Nav SDK เริ่มทำงานในโหมดไม่มีส่วนหัว เราเพียงแค่ต้องนำคำสั่ง 2 รายการนั้นออก หากต้องการสลับระหว่างโหมดไม่มีส่วนหัวกับโหมดมีส่วนหัว (การนำทางที่ใช้งานอยู่) คุณสามารถใช้ตัวแปรเพื่อกำหนดว่าจะต้องใช้โหมดไม่มีส่วนหัวหรือไม่ เช่น
Boolean mHeadless = true;
จากนั้นคุณจะใช้ตัวแปรดังกล่าวในภายหลังได้ดังนี้
@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Obtain a reference to the NavigationFragment
if(!mHeadless) {
setContentView(R.layout.activity_nav_fragment);
mNavFragment =
(SupportNavigationFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
}
ตัวแปร mHeadless สามารถลิงก์กับคอมโพเนนต์ UI (เช่น การสลับ) ที่จะเปิดหรือปิดใช้โหมดไม่มีส่วนหัวตามความเหมาะสม
|
|
| Nav SDK ทำงานโดยเปิดใช้การนำทางที่ใช้งานอยู่ (โหมดไม่มีส่วนหัวปิดอยู่) | แอปเดียวกันแต่ตอนนี้ Nav SDK ทำงานในโหมดไม่มีส่วนหัว |
อย่างที่เห็นในตัวอย่างทางด้านขวาด้านบน การนำทางของ Nav SDK ทำงานอยู่เบื้องหลัง แต่ประสบการณ์การนำทางแบบเลี้ยวต่อเลี้ยวถูกปิดใช้
iOS
ใน iOS คุณสามารถเปิดใช้โหมดไม่มีส่วนหัวได้อย่างง่ายดายโดยเพิ่มการตั้งค่าต่อไปนี้ในระหว่างการเริ่มต้น MapView
mapView.isHidden = true
ตัวอย่างเช่น
/// The main map view.
private lazy var mapView: GMSMapView = {
let mapView = GMSMapView(frame: .zero)
mapView.isHidden = true /// Make it headless!
mapView.isNavigationEnabled = true
mapView.settings.compassButton = true
mapView.delegate = self
return mapView
}()
ดูลักษณะที่ปรากฏ ซึ่งหน้าจอจะขึ้นอยู่กับวิธีที่ติดตั้งใช้งาน UI และภาพหน้าจอเป็นเพียงภาพประกอบเพื่อแสดงให้เห็นถึงผลของการซ่อน mapView
|
|
| การนำทางที่ใช้งานอยู่ทำงานบน
แอปตัวอย่าง iOS |
แอปเดียวกันในโหมดไม่มีส่วนหัว |
ข้อควรพิจารณาในการติดตั้งใช้งาน
เนื่องจากโหมดไม่มีส่วนหัวเป็นเพียงการซ่อนแผนที่การนำทางจากหน้าจอ จึงช่วยประหยัดเวลาอยู่หน้าจอเท่านั้น ซึ่งจะช่วยให้แบตเตอรี่ของอุปกรณ์ใช้งานได้นานขึ้น อย่างไรก็ตาม เนื่องจาก Nav SDK จะทำงานต่อไป การอัปเดตตำแหน่งและการเรียกกลับเหตุการณ์ทั้งหมดจะทริกเกอร์ตามปกติ ดังนั้นการกำหนดค่านี้จึงไม่มีผลข้างเคียง
บทสรุป
เอกสารนี้แสดงให้เห็นถึงความยืดหยุ่นของ Nav SDK และสิ่งที่เราทำได้ในระบบปฏิบัติการต่างๆ ตามข้อจำกัดของระบบ นอกจากนี้ยังช่วยให้ลูกค้าปรับแต่งประสบการณ์การใช้งานของคนขับเพื่อหลีกเลี่ยงสิ่งรบกวนและปรับปรุงความปลอดภัย
แหล่งข้อมูลเพิ่มเติม
หากต้องปิดใช้การแจ้งเตือนระหว่างการนำทางเนื่องจากเหตุผลที่กล่าวไว้ข้างต้น คุณก็ทำได้เช่นกัน โปรดดูที่แก้ไขการแจ้งเตือนแบบเลี้ยวต่อเลี้ยวใน Nav SDK