Google Maps สําหรับ Android Automotive Intent

ข้อจำกัดความรับผิด

ผลิตภัณฑ์/ฟีเจอร์นี้จะเปลี่ยนแปลงและไม่ขึ้นอยู่กับข้อตกลงระดับการให้บริการ (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 และโรงอุปรากรซิดนีย์เป็นจุดแวะ

  1. Google ซิดนีย์

  2. ซิดนีย์โอเปร่าเฮ้าส์

  3. สวนสัตว์ 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

ปลายทางตามลําดับ

  1. สถานีชาร์จ ChargePoint (ตำแหน่ง: -32.9599188,151.6240806, กำลังไฟฟ้าขาออก: 6.6 กิโลวัตต์)

  2. สถานีชาร์จ Evie (ตำแหน่ง: -31.9432539,152.4699808, กำลังไฟฟ้า: 350kw)

  3. พอร์ตแมคคิวรี นิวเซาท์เวลส์

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

ปลายทางตามลําดับ

  1. สถานีชาร์จ ChargePoint (ตำแหน่ง: -32.9599188,151.6240806, เอาต์พุตพลังงาน: ไม่ทราบ)

  2. พอร์ตแมคคิวรี นิวเซาท์เวลส์

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

ปลายทางตามลําดับ

  1. สวนสัตว์ Taronga, ซิดนีย์ ออสเตรเลีย

  2. สถานีชาร์จ ChargePoint (ตำแหน่ง: -32.9599188,151.6240806, เอาต์พุตพลังงาน: ไม่ทราบ)

  3. สถานีชาร์จ 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);