กำหนดค่าการหยุดชะงักแบบเรียลไทม์
การหยุดชะงักแบบเรียลไทม์คือชุดฟีเจอร์ที่แจ้งเตือนผู้ใช้เกี่ยวกับการหยุดชะงักตามเส้นทาง และช่วยให้ผู้ใช้รายงานและยืนยันการหยุดชะงักที่พบได้ ตัวอย่างของการหยุดชะงัก ได้แก่ อุบัติเหตุจากยานพาหนะ การจราจรติดขัด การมีตำรวจและกล้องจับความเร็ว การก่อสร้าง การปิดช่องทางจราจร และสภาพอากาศบางอย่าง หน้านี้จะอธิบายฟีเจอร์การหยุดชะงักแบบเรียลไทม์และตัวเลือกการกำหนดค่า รวมถึงข้อควรพิจารณาสำหรับแอปที่ใช้ UI การนำทางที่กำหนดเอง
ฟีเจอร์การหยุดชะงักแบบเรียลไทม์
Navigation SDK มีฟีเจอร์การหยุดชะงักแบบเรียลไทม์ต่อไปนี้เป็นส่วนหนึ่งของประสบการณ์การนำทางหลัก- ข้อความไฮไลต์การหยุดชะงักแบบอินเทอร์แอกทีฟตามเส้นทาง
- การแจ้งเตือนการหยุดชะงักโดยอัตโนมัติพร้อมการโหวตระหว่างการนำทางที่ใช้งานอยู่
- การรายงานการหยุดชะงักระหว่างการนำทางที่ใช้งานอยู่
ฟีเจอร์เหล่านี้กำหนดค่าได้และเปิดใช้อยู่โดยค่าเริ่มต้น ส่วนต่อไปนี้จะให้ข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์และตัวเลือกการกำหนดค่าที่ใช้ได้
ข้อความไฮไลต์การหยุดชะงักแบบอินเทอร์แอกทีฟตามเส้นทาง
เมื่อแอปแสดงเส้นทาง ไม่ว่าจะเป็นในภาพรวมเส้นทางหรือระหว่างการนำทางที่ใช้งานอยู่ การหยุดชะงักในปัจจุบันจะปรากฏเป็นข้อความไฮไลต์ตามเส้นทาง เมื่อเปิดใช้เลเยอร์การจราจร การหยุดชะงักนอกเส้นทางจะปรากฏบนแผนที่ด้วย ข้อความไฮไลต์จะมีไอคอนที่ระบุประเภทของการหยุดชะงัก
คุณควบคุมการแสดงข้อความไฮไลต์การหยุดชะงักตามเส้นทางได้โดยใช้ setTrafficPromptsEnabled ซึ่งจะควบคุมการแสดงการแจ้งเตือนอัตโนมัติเมื่อผู้ใช้เข้าใกล้จุดที่เกิดการหยุดชะงักด้วย
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
แสดงรายละเอียดการหยุดชะงักเมื่อผู้ใช้แตะข้อความไฮไลต์
การแตะข้อความไฮไลต์การหยุดชะงักจะเปิดการ์ดข้อมูลที่มีรายละเอียดเพิ่มเติม ซึ่งจะมีผลกับทั้งข้อความไฮไลต์บนเส้นทางและนอกเส้นทาง แต่ข้อความไฮไลต์นอกเส้นทางจะปรากฏก็ต่อเมื่อเปิดใช้เลเยอร์การจราจรเท่านั้น การ์ดจะแสดงประเภทการหยุดชะงัก เวลาที่รายงานครั้งล่าสุด และบางครั้งอาจมีตัวเลือกให้โหวตว่าการหยุดชะงักยังคงมีอยู่หรือไม่ ประเภทการ์ดข้อมูลและตัวเลือกการกำหนดค่าจะแตกต่างกันไปขึ้นอยู่กับว่าผู้ใช้กำลังอยู่ในการนำทางที่ใช้งานอยู่หรือไม่
การ์ดข้อมูลไฮไลต์ในภาพรวมเส้นทาง ก่อนเริ่มการนำทางที่ใช้งานอยู่
ก่อนเริ่มการนำทางที่ใช้งานอยู่ ผู้ใช้สามารถแตะข้อความไฮไลต์บนเส้นทางหรือนอกเส้นทางในแผนที่หรือภาพรวมเส้นทางเพื่อเปิดการ์ดข้อมูลได้ ข้อความไฮไลต์นอกเส้นทางกำหนดให้ต้องเปิดใช้เลเยอร์การจราจร การ์ดข้อมูลจะแสดงรายละเอียดเพิ่มเติมเกี่ยวกับการหยุดชะงัก
คุณสามารถควบคุมความสามารถของผู้ใช้ในการแตะข้อความไฮไลต์การหยุดชะงักในภาพรวมเส้นทางเพื่อแสดงข้อมูลเพิ่มเติมโดยใช้ setTrafficIncidentCardsEnabled
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
การ์ดข้อมูลข้อความไฮไลต์ระหว่างการนำทางที่ใช้งานอยู่
ในระหว่างการนำทางที่ใช้งานอยู่ ผู้ใช้สามารถแตะข้อความไฮไลต์การหยุดชะงักบนเส้นทางหรือนอกเส้นทางเพื่อเปิดการ์ดข้อมูลได้ การ์ดจะแสดงประเภทการหยุดชะงักและเวลาที่รายงานล่าสุด รวมถึงมีปุ่มให้ผู้ใช้โหวตว่าการหยุดชะงักยังคงอยู่หรือไม่
การโหวตใช้ได้กับการหยุดชะงักทั้งในเส้นทางและนอกเส้นทางภายในรัศมี 5 กม. จากผู้ใช้ ยกเว้นการปิดถนน Google จะประมวลผลการโหวตเหล่านี้เพื่อช่วยพิจารณาว่าจะแสดงการหยุดชะงักต่อไปหรือไม่ การโหวตอาจปรากฏบนแผนที่สำหรับผู้ใช้ Google Maps และ Navigation SDK รายอื่นๆ ด้วย
คุณควบคุมการแสดงผลและความสามารถในการแตะของข้อความไฮไลต์การหยุดชะงักระหว่างการนำทางที่ใช้งานอยู่ได้โดยใช้ setTrafficPromptsEnabled ซึ่งจะควบคุมการแสดงข้อความไฮไลต์ตามเส้นทางและการแสดงการแจ้งเตือนอัตโนมัติเมื่อผู้ใช้เข้าใกล้การหยุดชะงักด้วย
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
การแจ้งเตือนการหยุดชะงักโดยอัตโนมัติพร้อมการโหวตระหว่างการนำทางที่ใช้งานอยู่
ในระหว่างการนำทางที่ใช้งานอยู่ เมื่อผู้ใช้เข้าใกล้จุดที่มีการหยุดชะงักตามเส้นทาง ข้อความแจ้งจะปรากฏขึ้นพร้อมข้อมูลเกี่ยวกับการหยุดชะงักและปุ่มสำหรับโหวตว่าการหยุดชะงักยังคงอยู่หรือไม่ Google จะประมวลผลการโหวตที่ผู้ใช้ส่งมา และอาจแสดงการโหวตนั้นบนแผนที่สำหรับผู้ใช้ Google Maps และ Navigation SDK รายอื่นๆ รวมถึงใช้เพื่อพิจารณาว่าจะแสดงการหยุดชะงักต่อไปหรือไม่
คุณกำหนดค่าการแสดงข้อความแจ้งเตือนระหว่างการนำทางที่ใช้งานอยู่ได้โดยใช้ setTrafficPromptsEnabled ซึ่งจะควบคุมการแสดงข้อความไฮไลต์ตามเส้นทางด้วย
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
การรายงานการหยุดชะงักระหว่างการนำทางที่ใช้งานอยู่
ในโหมดการไปยังส่วนต่างๆ ที่ใช้งานอยู่ ปุ่มจะปรากฏใน UI การนำทางซึ่งช่วยให้ผู้ใช้รายงานการหยุดชะงักใหม่ๆ ตามเส้นทางได้ เมื่อผู้ใช้แตะปุ่ม เมนูที่มีประเภทการหยุดชะงักที่รายงานได้จะปรากฏขึ้น Google จะประมวลผลรายงานที่ผู้ใช้ส่งมา และอาจแสดงรายงานดังกล่าวบนแผนที่สำหรับผู้ใช้ Google Maps และ Navigation SDK รายอื่นๆ
การรายงานการปิดถนนอาจแสดงเส้นทางอื่นเพื่อเลี่ยงส่วนที่ถูกปิดกั้น โดยแจ้งให้ผู้ใช้ยืนยันหรือปฏิเสธการเปลี่ยนเส้นทาง ฟีเจอร์นี้ขึ้นอยู่กับความพร้อมให้บริการ
แสดงหรือซ่อนปุ่มการรายงานมาตรฐาน
คุณกำหนดค่าระดับการเข้าถึงของปุ่มการรายงานมาตรฐานระหว่างการนำทางที่ใช้งานอยู่ได้โดยใช้ setReportIncidentButtonEnabled
// Enables the incident reporting button to show in situations where incident // reporting is possible. // Using the SupportNavigationFragment mNavFragment.setReportIncidentButtonEnabled(true); // Using the NavigationView navigationView.setReportIncidentButtonEnabled(true);
เพิ่มปุ่มการรายงานที่กำหนดเอง
คุณสามารถเพิ่มปุ่มการรายงานที่กำหนดเองลงใน UI การนำทางแทนปุ่มการรายงานการหยุดชะงักมาตรฐานได้ เมื่อผู้ใช้คลิกปุ่มที่กำหนดเอง คุณสามารถเรียกให้แสดงเมนูการรายงานได้โดยเรียกใช้เมธอด showReportIncidentsPanel ก่อนเพิ่มปุ่มการรายงานที่กำหนดเอง ให้ตรวจสอบว่าแอปอยู่ในการนำทางที่ใช้งานอยู่ และผู้ใช้อยู่ในประเทศที่เปิดใช้การรายงานโดยเรียกใช้ isIncidentReportingAvailable หากไม่เป็นไปตามเงื่อนไขข้อใดข้อหนึ่ง เมนูการรายงานจะไม่ปรากฏ
Button customReportIncidentButton = findViewById(R.id.custom_reporting_button); // Check if reporting is available before displaying your button customReportIncidentButton.setVisibility( navigationView.isReportingAvailable ? View.VISIBLE : View.GONE); // Trigger the reporting flow if the button is clicked customReportIncidentButton.setOnClickListener(v -> navigationView.showReportIncidentsPanel());
ทำงานกับ UI การนำทางที่กำหนดเอง
หากการติดตั้งใช้งาน Navigation SDK มีองค์ประกอบ UI ที่กำหนดเอง คุณต้องพิจารณาองค์ประกอบการรบกวนแบบเรียลไทม์เพื่อหลีกเลี่ยงความขัดแย้ง
การวางตำแหน่งปุ่มรายงาน
โดยค่าเริ่มต้น ปุ่มรายงานการหยุดชะงักจะอยู่ที่มุมด้านล่าง/มุมท้ายของแผนที่ โดยอยู่ทางด้านขวาสำหรับภาษาที่อ่านจากซ้ายไปขวา และอยู่ทางด้านซ้ายสำหรับภาษาที่อ่านจากขวาไปซ้าย หากต้องการย้ายปุ่มรายงานเพื่อเพิ่มพื้นที่สำหรับองค์ประกอบ UI ที่กำหนดเอง ให้เพิ่มการควบคุมที่กำหนดเองBOTTOM_END_BELOW หรือ FOOTER ซึ่งจะดันตำแหน่งของปุ่มขึ้นบนหน้าจอ การวาง UI ที่กำหนดเองภายในตัวควบคุมที่กำหนดเองยังช่วยให้มั่นใจได้ว่าข้อความแจ้งที่แสดงโดย Navigation SDK จะวางซ้อนองค์ประกอบ UI ที่กำหนดเองอย่างเหมาะสมขณะแสดง หากใช้การควบคุมที่กำหนดเองไม่ได้ ให้ใช้ Prompt Visibility API เพื่อจัดการความขัดแย้งที่อาจเกิดขึ้นใน UI
Prompt Visibility API (เวอร์ชันทดลอง)
Prompt Visibility API ช่วยให้คุณหลีกเลี่ยงความขัดแย้งระหว่างองค์ประกอบ UI ที่สร้างโดย Navigation SDK กับองค์ประกอบ UI ที่คุณกำหนดเองได้โดยการเพิ่ม Listener เพื่อรับ Callback ก่อนที่องค์ประกอบ UI ของ Navigation SDK จะปรากฏขึ้นและทันทีที่นำองค์ประกอบออก คุณสามารถรับ Callback สำหรับองค์ประกอบการหยุดชะงักแบบเรียลไทม์ ซึ่งรวมถึงการ์ดข้อมูล ข้อความแจ้ง และเมนูการรายงานการหยุดชะงัก ตลอดจนการแจ้งเตือนอื่นๆ ที่สร้างโดย Navigation SDK// Sample listener val listener: PromptVisibilityChangedListener = { isVisible -> if (isVisible) { customFab.visibility = false customFooter.visibility = false moveSomeOtherThingsAround() } else { customFab.visibility = true customFooter.visibility = true moveSomeThingsBackToWhereTheyWereBefore() } } // Inside onCreate() navigationView.addPromptVisibilityChangedListener(listener) // Inside onDestroy() navigationView.removePromptVisibilityChangedListener(listener)