ข้อจำกัดความรับผิด
ผลิตภัณฑ์/ฟีเจอร์นี้จะเปลี่ยนแปลงและไม่ขึ้นอยู่กับข้อตกลงระดับการให้บริการ (SLA) หรือนโยบายการเลิกใช้งาน การใช้งานอาจมีการเปลี่ยนแปลงในรุ่นต่อๆ ไป
เกี่ยวกับซอฟต์แวร์ตัวอย่าง ไฟล์ข้อมูล และ/หรือซอร์สโค้ดที่มาพร้อมกับเอกสารประกอบนี้ ผลิตภัณฑ์นี้ให้บริการ "ตามสภาพที่เป็นอยู่" โดยไม่มีการรับประกันใดๆ และ Google ขอปฏิเสธการรับประกันทั้งหมดไม่ว่าโดยชัดแจ้ง โดยนัย ตามกฎหมาย หรืออื่นๆ ซึ่งรวมถึงแต่ไม่จำกัดเพียงการรับประกันคุณค่าความเป็นสินค้า ความเหมาะสมต่อวัตถุประสงค์เฉพาะ และการไม่ละเมิดสิทธิใดๆ ที่เกี่ยวข้องกับผลิตภัณฑ์นี้
คุณเปิดการนําทางใน Google Maps ผ่าน Intent ของ Android Automotive ได้
ดูข้อมูลเพิ่มเติมได้ที่ Intent ของ Google Maps สําหรับ Android
ดูข้อมูลเพิ่มเติมเกี่ยวกับการนําแอปของคุณไปยังยานพาหนะที่ทํางานด้วย Android Auto หรือ Android Automotive OS ได้ที่ Android สำหรับรถยนต์
ภาพรวม
หน้านี้อธิบาย Intent ที่คุณสามารถใช้กับ Google Maps สำหรับ Android Auto อ่านเอกสารประกอบโดยละเอียดสำหรับนักพัฒนาแอป Android ได้ที่
คำขอ Intent
หากต้องการเปิด Google Maps สำหรับ Android Automotive ด้วย Intent คุณต้องสร้างออบเจ็กต์ Intent ก่อน โดยระบุการดำเนินการ, URI และแพ็กเกจ
การดำเนินการ Intent ทั้งหมดของ Google Maps จะเรียกว่าการดำเนินการดู
ACTION_VIEW
URI Intent ของ Google Maps ใช้สตริงที่เข้ารหัส URI ซึ่งระบุการดำเนินการที่ต้องการ พร้อมกับข้อมูลบางอย่างที่จะใช้ดำเนินการ
แพ็กเกจ การเรียกใช้
setPackage("com.google.android.apps.maps")
ช่วยให้มั่นใจว่าแอป Google Maps สำหรับ Android จะจัดการ Intent หากไม่ได้ตั้งค่าแพ็กเกจไว้ ระบบจะกำหนดว่าแอปใดจัดการ Intent ได้ หากมีแอปหลายแอป ระบบอาจถามคุณว่าต้องการใช้แอปใด
หลังจากสร้าง Intent แล้ว คุณสามารถขอให้ระบบเปิดแอปที่เกี่ยวข้องได้หลายวิธี วิธีทั่วไปคือการส่ง Intent ไปยังเมธอด [startActivity()]
ระบบจะเปิดแอปที่จำเป็น ซึ่งในกรณีนี้คือ Google Maps และเริ่มกิจกรรมที่เกี่ยวข้อง
// Create a Uri from an intent string. Use the result to create an Intent.
Uri mapIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
// Create an Intent from mapIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);
หากระบบไม่พบแอปที่ตอบสนองต่อ Intent ได้ แอปของคุณอาจขัดข้อง ด้วยเหตุนี้ ก่อนแสดง Intent รายการใดรายการหนึ่งเหล่านี้ต่อผู้ใช้ โปรดตรวจสอบว่าได้ติดตั้งแอปพลิเคชันฝั่งที่รับแล้ว
หากต้องการยืนยันว่าแอปพร้อมรับ Intent ให้เรียกใช้ [resolveActivity()]
ในออบเจ็กต์ [Intent]
หากผลลัพธ์ไม่ใช่ค่าว่าง แสดงว่ามีแอปอย่างน้อย 1 แอปที่จัดการ Intent ได้และสามารถเรียกใช้[startActivity()]
ได้อย่างปลอดภัย หากผลลัพธ์เป็น Null คุณไม่ควรใช้ Intent และปิดใช้ฟีเจอร์ที่เรียก Intent นั้น (หากเป็นไปได้)
if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}
เช่น หากต้องการเปิดการนําทางแบบเลี้ยวต่อเลี้ยวไปยังสวนสัตว์ Taronga ในซิดนีย์ คุณสามารถใช้โค้ดต่อไปนี้
Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}
สตริงการค้นหาที่เข้ารหัส URI
สตริงทั้งหมดที่ส่งไปยัง Intent ของ Google Maps ต้องเข้ารหัส URI เช่น สตริง "1st & Pike, Seattle" ควรเปลี่ยนเป็น 1st%20%26%20Pike%2C%20Seattle
เว้นวรรคในสตริงสามารถเข้ารหัสด้วย %20
หรือแทนที่ด้วยเครื่องหมายบวก
(+)
คุณใช้เมธอด android.net.Uri parse()
เพื่อเข้ารหัสสตริงได้ เช่น
Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));
เปิดการนำทางแบบเลี้ยวต่อเลี้ยว
ใช้ Intent นี้เพื่อเปิดการนําทางของ Google Maps ที่มีเส้นทางแบบเลี้ยวต่อเลี้ยวไปยังที่อยู่หรือพิกัดที่ระบุ ระบบจะแสดงเส้นทางจากตำแหน่งปัจจุบันของผู้ใช้เสมอ
google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename
พารามิเตอร์
หากต้องการเปิดการนําทาง ให้ใช้ place
หรือ q
กับ waypoints
(ไม่บังคับ)
หากต้องการทำเครื่องหมายจุดแวะเป็นสถานีชาร์จ (ไม่บังคับ) โปรดดูส่งแผนการเดินทางด้วยยานพาหนะไฟฟ้าไปยัง Google Maps
q
กำหนดจุดสิ้นสุดสำหรับการค้นหาการนำทาง ซึ่งอาจเป็นละติจูด/ลองจิจูดหรือที่อยู่รูปแบบการค้นหา หากเป็นสตริงการค้นหาที่แสดงผลลัพธ์มากกว่า 1 รายการ ระบบจะเลือกผลลัพธ์แรกplace
ตั้งค่าปลายทางเป็นบ้านหรือที่ทํางาน ระบุ "บ้าน" เพื่อไปยังบ้านของผู้ใช้ และ "ที่ทํางาน" เพื่อไปยังที่ทํางานของผู้ใช้avoid
กำหนดองค์ประกอบที่เส้นทางควรหลีกเลี่ยงavoid
ไม่บังคับและสามารถตั้งค่าเป็นค่าต่อไปนี้อย่างน้อย 1 ค่าt
สำหรับค่าผ่านทางh
สำหรับทางหลวงf
สำหรับเรือเฟอร์รี่
waypoints
ระบุสถานที่พักกลางอย่างน้อย 1 แห่งเพื่อกำหนดเส้นทางไปยังจุดหมายสุดท้ายที่ระบุโดยq
คุณสามารถระบุจุดแวะพักหลายจุดได้โดยใช้อักขระไปป์ (|
) เพื่อคั่นสถานที่ต่างๆ เช่นBerlin,Germany|Paris,France
คุณใช้จุดแวะพักได้มากเท่าที่ต้องการ ระบบจะเพิ่มจุดแวะพักลงในเส้นทางตามลำดับเดียวกับที่ระบุไว้ใน URL จุดแวะพักแต่ละจุดอาจเป็นที่อยู่หรือพิกัดละติจูด/ลองจิจูดที่คั่นด้วยคอมมา และคุณมีที่อยู่และพิกัดละติจูด/ลองจิจูดใน Intent เดียวกันได้ สตริงควรใช้การหนีค่า URL ดังนั้นจุดแวะพักอย่าง "เบอร์ลิน เยอรมนี|ปารีส ฝรั่งเศส" ควรแปลงเป็นBerlin%2CGermany%7CParis%2CFrance
ตัวอย่าง
Intent นี้จะขอการนำทางแบบเลี้ยวต่อเลี้ยวไปยังสวนสัตว์ Taronga ในซิดนีย์ ออสเตรเลีย
Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
หากไม่ต้องการจ่ายค่าผ่านทางหรือนั่งเรือเฟอร์รี่ คุณสามารถขอเส้นทางที่พยายามหลีกเลี่ยงสถานการณ์เหล่านี้
Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
หรือหากต้องการไปยังบ้าน ให้ใช้คำสั่งต่อไปนี้
Uri mapIntentUri = Uri.parse("google.navigation:place=home");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
หากต้องการเปิดการนําทางแบบเลี้ยวต่อเลี้ยวไปยังที่อยู่ 3 แห่งต่อไปนี้ตามลําดับ ให้ใช้สวนสัตว์ Taronga เป็นปลายทางสุดท้าย q
และ Google Sydney และโรงอุปรากรซิดนีย์เป็นจุดแวะ
Google ซิดนีย์
ซิดนีย์โอเปร่าเฮ้าส์
สวนสัตว์ Taronga, ซิดนีย์ ออสเตรเลีย
Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7CSydney+Opera+House");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
คุณสามารถแสดงจุดแวะพักด้วยละติจูดและลองจิจูดที่คั่นด้วยคอมมาแทนที่อยู่ได้ เช่นเดียวกับ q
ตัวอย่างเช่น หากต้องการเปิดการนําทางแบบเดิมขณะส่งละติจูดลองจิจูดของโรงอุปรากรซิดนีย์แทนที่อยู่ ให้ทําดังนี้
Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7C-33.856159,151.215256");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
ส่งแผนการเดินทางด้วยรถยนต์ไฟฟ้าไปยัง Google Maps
ใช้ความตั้งใจในการนําทางหลายจุดหมายนี้เพื่อระบุจุดหมายบางแห่งเป็นจุดชาร์จรถยนต์ไฟฟ้า (EV) Intent นี้ซึ่งขยายIntent จุดแวะพักหลายจุดจะช่วยให้ผู้ขับขี่รักษาระดับแบตเตอรี่รถยนต์ไฟฟ้าไว้ให้เพียงพอที่จะไปถึงจุดหมายได้ด้วยการซิงค์ข้อมูลจุดชาร์จระหว่างแอปวางแผนการเดินทางด้วย EV กับ Google Maps
จึงจะทำเครื่องหมายจุดแวะพักเป็นสถานีชาร์จได้สำหรับจุดชาร์จ เจตนาการเดินทางมีดังนี้
- ต้องมีชื่อและละติจูด-ลองจิจูด
- อาจมีกำลังไฟขาออก (ไม่บังคับ) เพื่อใช้คำนวณเวลาในการชาร์จ
Google ใช้ชื่อสถานีชาร์จและละติจูด/ลองจิจูดเพื่อค้นหาสถานที่ตั้งของสถานีชาร์จที่ตรงกันเพื่อแสดงข้อมูลอย่างละเอียด เช่น ประเภทหัวชาร์จ จำนวนทั้งหมด ความเร็ว และความพร้อมให้บริการแบบเรียลไทม์ วิธีการชำระเงินที่รองรับ รวมถึงจุดที่น่าสนใจ (POI) ของโฮสต์ เช่น เส้นทางการขับรถภายในลานจอดรถกลางแจ้งสำหรับส่วนสุดท้ายของการนำทาง เวลาเปิดทําการ การให้คะแนน ใช้ <brand name>
เช่น ChargePoint
เพื่อให้สถานีชาร์จตรงกับข้อมูลของ Google
พารามิเตอร์
ปลายทางสุดท้าย
หากต้องการตั้งค่าสถานีชาร์จเป็นปลายทางสุดท้าย ให้ใช้คำสั่งต่อไปนี้
q
: ต้องมีค่าละติจูดและลองจิจูดของสถานีชาร์จq_type
:1
ระบุว่าปลายทางสุดท้ายคือสถานีชาร์จq_name
: ชื่อจุดหมายสุดท้าย ต้องระบุหากq_type
เป็น1
q_power_output_kw
: จำนวนทศนิยม 2 ตำแหน่งสำหรับกำลังไฟฟ้าที่จ่ายของสถานีชาร์จเป็นกิโลวัตต์ ไม่บังคับ
จุดบนเส้นทาง
สําหรับจุดแวะพัก พารามิเตอร์ทั้งหมดจะเป็นอาร์เรย์ค่าแบบขนานที่คั่นด้วย |- ตามลําดับเดียวกับจุดแวะพัก โดยไม่รวมปลายทางสุดท้าย ระบบจะถือว่าจำนวนองค์ประกอบในอาร์เรย์ขนานไม่ตรงกันเป็นการออกคำสั่งที่มีรูปแบบไม่ถูกต้อง
หากต้องการเพิ่มจุดแวะพักของสถานีชาร์จอย่างน้อย 1 จุด ให้ใช้พารามิเตอร์ต่อไปนี้ ซึ่งทั้งหมดนี้จะใช้หรือไม่ก็ได้ หากมีการทำเครื่องหมายจุดหมายใดจุดหนึ่งว่าเป็นสถานีชาร์จ จะต้องระบุชื่อจุดแวะพักสำหรับจุดหมายนั้น
waypoints
: รายการจุดแวะพักตามที่อธิบายไว้ใน Intent การนำทางแบบเลี้ยวต่อเลี้ยว ต้องเป็นค่าละติจูด-ลองจิจูดสำหรับจุดแวะพักของสถานีชาร์จwaypoint_types
: ประเภทต่อจุดสังเกตที่ระบุเป็นตัวเลข0
คือป้ายจอดรถ (ค่าเริ่มต้น) และ1
คือสถานีชาร์จwaypoint_names
: ชื่อจุดอ้างอิง ต้องกรอกข้อมูลในช่องนี้สำหรับสถานีชาร์จwaypoint_power_outputs_kw
: ตัวเลขทศนิยม 2 ตำแหน่งสำหรับกำลังไฟฟ้าของสถานีชาร์จเป็นกิโลวัตต์ สำหรับสถานีชาร์จ คุณสามารถระบุค่ากำลังไฟฟ้าของจุดแวะพักได้ (ไม่บังคับ) ซึ่งจะใช้เป็นค่าสำรองหากไม่พบสถานีที่ตรงกัน ช่องว่างหมายความว่าไม่มีค่าใดๆ
พฤติกรรมด้านประสบการณ์ของผู้ใช้ (UX)
สําหรับความตั้งใจเดินทางที่มีจุดหมายหลายแห่ง ระบบจะแสดงหน้าจอภาพรวมเส้นทาง แต่การนําทางจะไม่เริ่มต้นโดยอัตโนมัติ
สำหรับ Intent ที่มีการจัดรูปแบบถูกต้อง Google Maps จะแสดงภาพรวมของเส้นทางสำหรับการเดินทาง หน้าจอภาพรวมเส้นทางจะแสดงจุดแวะพักทั้งหมดและจุดหมายสุดท้ายจากจุดหมายที่ต้องการ พร้อมคำแนะนำในการชาร์จหากมี
สำหรับจุดแวะพักหรือจุดหมายปลายทางที่ทําเครื่องหมายเป็นสถานีชาร์จ Google Maps จะค้นหาสถานที่ที่ตรงกันในฐานข้อมูลของ Google
เมื่อพบการจับคู่ Google Maps จะใช้ข้อมูลของ Google เพื่อแสดงสถานีชาร์จในอินเทอร์เฟซผู้ใช้ (UI) และให้คำแนะนำการชาร์จสำหรับสถานีชาร์จ หากไม่พบรายการที่ตรงกัน ระบบจะใช้ข้อมูลที่ระบุไว้ใน Intent สำหรับสถานีชาร์จ (ละติจูดและลองจิจูด ชื่อ และกำลังไฟฟ้า) เพื่อแสดงสถานีชาร์จนี้ใน UI และให้คำแนะนำการชาร์จที่สถานีชาร์จนี้
ตัวอย่าง
นำทางไปยังจุดหมายปลายทางผ่านสถานีชาร์จหลายแห่ง
เจตนาต่อไปนี้นำทางไปยังปลายทางสุดท้าย ซึ่งเป็นเมืองพอร์ตแมคคิวรี รัฐนิวเซาท์เวลส์ ผ่านสถานีชาร์จ 2 แห่ง ได้แก่ ChargePoint และ Evie
ปลายทางตามลําดับ
สถานีชาร์จ ChargePoint (ตำแหน่ง: -32.9599188,151.6240806, กำลังไฟฟ้าขาออก: 6.6 กิโลวัตต์)
สถานีชาร์จ Evie (ตำแหน่ง: -31.9432539,152.4699808, กำลังไฟฟ้า: 350kw)
พอร์ตแมคคิวรี นิวเซาท์เวลส์
Uri mapIntentUri =
Uri.parse(
"google.navigation:q=Port+Macquarie+NSW"
+ "&waypoints=-32.9599188%2C151.6240806%7C-31.9432539%2C152.4699808"
+ "&waypoint_types=1%7C1"
+ "&waypoint_names=ChargePoint+Charging+Station%7CEvie+Charging+Station"
+ "&waypoint_power_outputs_kw=6.6%7C350");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
กำลังไฟฟ้าขาออกที่ไม่รู้จัก
หากไม่ทราบค่ากำลังไฟฟ้าเอาต์พุต ให้ปล่อยช่อง waypoint_power_outputs_kw
ที่เกี่ยวข้องว่างไว้ หรือหากช่องว่างทั้งหมดว่างเปล่า ก็ไม่จำเป็นต้องระบุพารามิเตอร์ waypoint_power_outputs_kw
ปลายทางตามลําดับ
สถานีชาร์จ ChargePoint (ตำแหน่ง: -32.9599188,151.6240806, เอาต์พุตพลังงาน: ไม่ทราบ)
พอร์ตแมคคิวรี นิวเซาท์เวลส์
Uri mapIntentUri =
Uri.parse(
"google.navigation:q=Port+Macquarie+NSW"
+ "&waypoints=-32.9599188%2C151.6240806"
+ "&waypoint_types=1"
+ "&waypoint_names=ChargePoint+Charging+Station");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
ทำเครื่องหมายจุดหมายสุดท้ายเป็นสถานีชาร์จ
หากต้องการทำเครื่องหมายปลายทางสุดท้ายเป็นสถานีชาร์จ ให้ระบุพารามิเตอร์ q_type
, q_name
และ q_power_output_kw
ปลายทางตามลําดับ
สวนสัตว์ Taronga, ซิดนีย์ ออสเตรเลีย
สถานีชาร์จ ChargePoint (ตำแหน่ง: -32.9599188,151.6240806, เอาต์พุตพลังงาน: ไม่ทราบ)
สถานีชาร์จ Evie (ตำแหน่ง: -31.9432539,152.4699808, เอาต์พุตพลังงาน: 350 กิโลวัตต์)
Uri mapIntentUri =
Uri.parse(
"google.navigation:q=-31.9432539,152.4699808&q_type=1&q_name=Evie+Charging+Station&q_power_output_kw=350"
+ "&waypoints=Taronga+Zoo%2C+Sydney+Australia%7C-32.9599188%2C151.6240806"
+ "&waypoint_types=0%7C1"
+ "&waypoint_names=%7CChargePoint+Charging+Station"
+ "&waypoint_power_outputs_kw=%7C");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);