สร้างแผนที่ 3 มิติแบบสมจริงแผนที่แรก

1. ก่อนเริ่มต้น

Codelab นี้มีไว้เพื่อช่วยให้คุณเข้าใจวิธีสร้างแผนที่ 3 มิติแผนที่แรกโดยใช้แผนที่ 3 มิติที่เหมือนภาพถ่ายจริงใน Maps JavaScript คุณจะได้เรียนรู้พื้นฐานเกี่ยวกับการโหลดคอมโพเนนต์ที่เหมาะสมของ Maps JavaScript API, การแสดงแผนที่ 3 มิติใบแรก และวาดฟีเจอร์บนแผนที่

สิ่งที่คุณจะสร้าง

แผนที่แรกที่คุณจะสร้าง

ในโค้ดแล็บนี้ คุณจะได้สร้างเว็บแอป 3 มิติที่ทําสิ่งต่อไปนี้

  • โหลด Maps JavaScript API แบบไดนามิก
  • แสดงแผนที่ 3 มิติที่ศูนย์กลางคือ CN Tower ในโตรอนโต
  • แสดงขอบเขตรอบสถานที่ตั้ง
  • ปิดจุดที่น่าสนใจในแผนที่ 3 มิติ
  • ขยายขอบเขตให้ครอบคลุมสถานที่ตั้ง

สิ่งที่คุณจะได้เรียนรู้

  • การเริ่มต้นใช้งาน Google Maps Platform
  • การโหลด Maps JavaScript API แบบไดนามิกจากโค้ด JavaScript โดยใช้การนําเข้าไลบรารีแบบไดนามิก
  • โหลดแผนที่ 3 มิติโดยใช้คลาส Map3DElement
  • การใช้รูปหลายเหลี่ยมและการยื่นออกมาเพื่อวาดบนแผนที่

2. ข้อกำหนดเบื้องต้น

คุณจะต้องทำความคุ้นเคยกับรายการต่างๆ ที่นี่เพื่อทํา Codelab นี้ให้เสร็จสมบูรณ์ หากคุ้นเคยกับการใช้งาน Google Maps Platform อยู่แล้ว ให้ข้ามไปดู Codelab

ผลิตภัณฑ์ Google Maps Platform ที่จําเป็น

ใน Codelab นี้ คุณจะใช้ผลิตภัณฑ์ Google Maps Platform ต่อไปนี้

  • Maps JavaScript API

ใช่ เพียงเท่านี้คุณก็เพิ่มแผนที่ 3 มิติลงในหน้าเว็บได้แล้ว ง่ายนิดเดียว

ข้อกำหนดอื่นๆ สำหรับ Codelab นี้

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

  • บัญชี Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • คีย์ API ของ Google Maps Platform ที่เปิดใช้ Maps JavaScript API
  • ความรู้พื้นฐานเกี่ยวกับ JavaScript, HTML และ CSS
  • เครื่องมือแก้ไขข้อความหรือ IDE ที่คุณเลือกเพื่อบันทึกไฟล์ที่แก้ไขเพื่อดู
  • เว็บเบราว์เซอร์สำหรับดูไฟล์ขณะทำงาน

3. ตั้งค่า

ตั้งค่า Google Maps Platform

หากยังไม่มีบัญชี Google Cloud Platform และโปรเจ็กต์ที่เปิดใช้การเรียกเก็บเงิน โปรดดูคู่มือเริ่มต้นใช้งาน Google Maps Platform เพื่อสร้างบัญชีการเรียกเก็บเงินและโปรเจ็กต์

  1. ใน Cloud Console ให้คลิกเมนูแบบเลื่อนลงของโปรเจ็กต์ แล้วเลือกโปรเจ็กต์ที่ต้องการใช้สำหรับโค้ดแล็บนี้

  1. เปิดใช้ Google Maps Platform API และ SDK ที่จําเป็นสําหรับโค้ดแล็บนี้ใน Google Cloud Marketplace โดยทำตามขั้นตอนในวิดีโอนี้หรือเอกสารประกอบนี้
  2. สร้างคีย์ API ในหน้าข้อมูลเข้าสู่ระบบของ Cloud Console คุณสามารถทำตามขั้นตอนในวิดีโอนี้หรือเอกสารประกอบนี้ คำขอทั้งหมดที่ส่งไปยัง Google Maps Platform ต้องใช้คีย์ API

4. โหลด Maps JavaScript API

เมื่อทำตามขั้นตอนทั้งหมดในส่วนการตั้งค่าแล้ว คุณก็พร้อมที่จะเริ่มสร้างแผนที่ 3 มิติแรก

สร้างหน้าเว็บที่ง่ายที่สุดเท่าที่คุณจะจินตนาการได้

ก่อนอื่นเราจะสร้างหน้าเว็บพื้นฐานมากๆ เพื่อโฮสต์โค้ดทั้งหมด ซึ่งทำได้ในเครื่องมือแก้ไขหรือแพลตฟอร์มใดก็ได้

 <!DOCTYPE html>
 <html>
   <head>
    <title>3D Maps Codelab</title>
     <style>
      html,
      body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
   </head>
   <body>
   </body>
 </html>

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

เช่นเดียวกับแผนที่ 2 มิติ รากฐานของแผนที่ 3 มิติคือ Maps JavaScript API คุณจึงต้องโหลด API ดังกล่าวก่อน

ซึ่งทำได้หลายวิธี โดยดูได้ที่ส่วนโหลด Maps JavaScript API ในเอกสารประกอบ

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

เพิ่มโปรแกรมโหลดแบบไดนามิก

หากต้องการใช้ตัวโหลดแบบไดนามิก ให้เพิ่มแท็กสคริปต์ต่อไปนี้ลงในหน้าเว็บ โดยเพิ่มคีย์ API ของคุณเองในตำแหน่งที่เหมาะสม (ซึ่งได้รับในขั้นตอนที่ 2) วางแท็กสคริปต์นี้ไว้ระหว่างส่วนเนื้อหาของหน้าเว็บพื้นฐาน

  <script async defer>
    (g => { var h, a, k, p = "The Google Maps JavaScript API", c = "google", l = "importLibrary", q = "__ib__", m = document, b = window; b = b[c] || (b[c] = {}); var d = b.maps || (b.maps = {}), r = new Set, e = new URLSearchParams, u = () => h || (h = new Promise(async (f, n) => { await (a = m.createElement("script")); e.set("libraries", [...r] + ""); for (k in g) e.set(k.replace(/[A-Z]/g, t => "_" + t[0].toLowerCase()), g[k]); e.set("callback", c + ".maps." + q); a.src = `https://maps.${c}apis.com/maps/api/js?` + e; d[q] = f; a.onerror = () => h = n(Error(p + " could not load.")); a.nonce = m.querySelector("script[nonce]")?.nonce || ""; m.head.append(a) })); d[l] ? console.warn(p + " only loads once. Ignoring:", g) : d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)) })({
      key: "YOUR_API_KEY",
      v: "alpha",
    });
  </script>

โปรดทราบว่าในระยะแรกของการเปิดตัวผลิตภัณฑ์นี้ เรากำลังใช้ alpha branch ของ API เพื่อเข้าถึงแผนที่ 3 มิติ เวอร์ชันนี้มีฟีเจอร์เวอร์ชันทดลองมากที่สุดของผลิตภัณฑ์และให้คุณทดสอบโค้ดทดลองใช้ก่อนเปิดตัวขณะที่อยู่ระหว่างการพัฒนาเพื่อให้คุณพร้อมใช้งานเมื่อถึงเวลาเปิดตัว

ตอนนี้คุณควรมีหน้าเว็บพื้นฐานที่มีตัวโหลดแบบไดนามิก (หากเปิดหน้าเว็บ มุมมองจะว่างเปล่า แต่ไม่ควรมีข้อผิดพลาด) ตอนนี้เราพร้อมที่จะเพิ่มแผนที่ 3 มิติแล้ว

หากรหัสใช้งานไม่ได้ด้วยเหตุผลใดก็ตาม ให้ไปที่ขั้นตอนที่ 6 แล้วเปรียบเทียบกับผลลัพธ์สุดท้ายเพื่อดูว่าเกิดข้อผิดพลาดใดขึ้น

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

5. แสดงแผนที่

ตอนนี้เราพร้อมที่จะเพิ่มแผนที่ 3 มิติแรกลงในหน้าเว็บแล้ว

แผนที่ 3 มิติสร้างขึ้นโดยใช้คลาส google.maps.maps3d.Map3DElement ซึ่งช่วยให้เราสร้างและทํางานกับอินสแตนซ์แผนที่ 3 มิติได้ ในโค้ดแล็บนี้ เราจะทํางานกับออบเจ็กต์แผนที่ 3 มิติโดยตรงแทนที่จะทําผ่านแท็ก HTML

สร้างฟังก์ชัน Init และโหลดไลบรารี

ก่อนอื่นเราจะสร้างฟังก์ชันที่โหลดองค์ประกอบลงในหน้าเว็บ ดูโค้ด อันดับแรกเราสร้างฟังก์ชันแบบอะซิงโครนัส ซึ่งช่วยให้เราตรวจสอบได้ว่าโหลดองค์ประกอบทั้งหมดแล้วก่อนที่จะดําเนินการกับโค้ดที่เหลือ จากนั้นเราจะเรียกใช้ฟังก์ชัน init เมื่อหน้าเว็บโหลด

เพิ่มบรรทัดนี้ไว้หลังสคริปต์การโหลดภายในส่วนเนื้อหาของหน้า

  <script>
    async function init() {
      const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");
    }
    init();
  </script>

โปรดทราบว่าเราใช้นิพจน์ await เพื่อให้แน่ใจว่าระบบโหลดคลังแล้วก่อนที่จะดําเนินการต่อ

สร้างองค์ประกอบแผนที่ 3 มิติและระบุตำแหน่ง

ถัดไปเราต้องระบุตำแหน่งที่ต้องการให้แสดงมุมมองแผนที่ สำหรับแผนที่ 3 มิติ คุณใช้พารามิเตอร์ต่างๆ ในการตั้งค่ามุมมองได้ ซึ่งหมายถึงพารามิเตอร์ของกล้องเสมือนจริงที่อธิบายสิ่งที่คุณกําลังมองในฉาก

เรามาสร้างวิวหอคอย CN Tower ที่มีลักษณะคล้ายกับภาพนี้กัน

แผนที่แรกที่คุณจะสร้าง

ก่อนอื่น เราต้องระบุพิกัดที่ต้องการดู ซึ่งประกอบด้วยมุมมอง 2 แบบ

  1. จุดที่เราต้องการดู รวมถึงระดับความสูง
  2. ระยะทางและทิศทางของกล้องเสมือนจริงที่กําลังมองจุดนั้น

เมื่อดูรูปภาพต่อไปนี้ คุณจะเห็นภาพคร่าวๆ ว่าการตั้งค่าเหล่านี้ทำงานอย่างไร

รูปภาพแสดงการตั้งค่าองค์ประกอบแผนที่

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

ตอนนี้เราจะไปสร้างแผนที่ 3 มิติในหน้าเว็บ โดยเพิ่มโค้ดต่อไปนี้ลงในหน้าในส่วน init หลังจากนําเข้าไลบรารีแล้ว

  const map3DElement = new Map3DElement({
      center: { lat: 43.6425, lng: -79.3871, altitude: 400 },
      range: 1000,
      tilt: 60,
      mode: MapMode.HYBRID,
  });

  document.body.append(map3DElement);

ก่อนอื่นให้สร้างองค์ประกอบและตั้งค่าพารามิเตอร์ตำแหน่งที่เหมาะสม จากนั้นเพิ่มคอมโพเนนต์ในหน้าเว็บ (เรากําหนดค่าให้กับ div ที่มีอยู่ได้หากต้องการ)

ตอนนี้โค้ดของคุณควรมีลักษณะดังตัวอย่างต่อไปนี้

<!DOCTYPE html>
<html>

<head>
    <title>3D Maps Codelab</title>
    <style>
        html,
        body {
            height: 100%;
            margin: 0;
            padding: 0;
        }
    </style>
</head>

<body>
    <script async defer>
        (g => { var h, a, k, p = "The Google Maps JavaScript API", c = "google", l = "importLibrary", q = "__ib__", m = document, b = window; b = b[c] || (b[c] = {}); var d = b.maps || (b.maps = {}), r = new Set, e = new URLSearchParams, u = () => h || (h = new Promise(async (f, n) => { await (a = m.createElement("script")); e.set("libraries", [...r] + ""); for (k in g) e.set(k.replace(/[A-Z]/g, t => "_" + t[0].toLowerCase()), g[k]); e.set("callback", c + ".maps." + q); a.src = `https://maps.${c}apis.com/maps/api/js?` + e; d[q] = f; a.onerror = () => h = n(Error(p + " could not load.")); a.nonce = m.querySelector("script[nonce]")?.nonce || ""; m.head.append(a) })); d[l] ? console.warn(p + " only loads once. Ignoring:", g) : d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)) })({
            key: "YOUR_API_KEY",
            v: "alpha",
        });
    </script>
    <script>
        async function init() {
            const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");

            const map3DElement = new Map3DElement({
                center: { lat: 43.6425, lng: -79.3871, altitude: 400 },
                range: 1000,
                tilt: 60,
                mode: MapMode.HYBRID
            });

            document.body.append(map3DElement);
        }

        init();
    </script>
</body>
</html>

ตอนนี้เราบันทึกไฟล์และเปิดหน้าในเบราว์เซอร์เพื่อดูว่าใช้งานได้แล้ว เราควรเห็นกล้องมองลงไปยังหอคอยดังที่แสดงในภาพ ลองเล่นไปก่อนแล้วค่อยเพิ่มกล่องบนหอคอย

แผนที่แรกที่คุณจะสร้าง

6. เพิ่มและยื่นฟีเจอร์

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

มุมมองของสถานที่ที่มีรูปหลายเหลี่ยมที่ยื่นออกมา

ซ่อนสิ่งที่ไม่จำเป็น

สิ่งแรกที่คุณอาจสังเกตเห็นคือเราได้ปิดจุดที่น่าสนใจ ในแผนที่นี้ เราต้องการให้หอคอยเป็นจุดสนใจ จึงต้องนำองค์ประกอบภาพอื่นๆ ออก

ในการดําเนินการนี้ เราต้องเพิ่มการเปลี่ยนแปลงโค้ดเพื่อซ่อนป้ายกํากับ อัปเดตเส้นโหมดของแผนที่เป็น "ภาพถ่ายดาวเทียม" เพื่อซ่อนจุด

  mode: MapMode.SATELLITE,

การตั้งค่าพร็อพเพอร์ตี้นี้จะปิดใช้ป้ายกำกับบนแผนที่ ซึ่งรวมถึงจุดที่น่าสนใจ ถนน และเส้นขอบ และสร้างมุมมอง "สะอาด" ของสถานที่

เพิ่มและจัดรูปแบบรูปหลายเหลี่ยม

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

ก่อนอื่นเราจะเพิ่มคลาสที่จําเป็นลงในหน้าเว็บโดยใช้บรรทัดโค้ดต่อไปนี้

  const { Polygon3DElement, AltitudeMode } = await google.maps.importLibrary("maps3d");

ซึ่งจะโหลดคลาส Polygon3DElement และ AltitudeMode ลงในหน้าเว็บ ซึ่งจําเป็นสําหรับเพิ่มออบเจ็กต์รูปหลายเหลี่ยมลงในมุมมอง

รูปหลายเหลี่ยมมีการตั้งค่าต่างๆ มากมายที่ควบคุมมุมมองได้ ตั้งแต่ความกว้างของเส้น เส้นสี (ตามชื่อหรือค่าฐาน 16) และความทึบของการตั้งค่าขอบเขตและการเติม เพื่อควบคุมว่าจะแสดงรูปหลายเหลี่ยมหลังองค์ประกอบหรืออาคารอื่นๆ หรือไม่ เช่น การวาดส่วนที่บดบัง ดูรายละเอียดเพิ่มเติมได้ในเอกสารประกอบของคลาส Polygon3DElement

ฟีเจอร์อีกอย่างที่เราจำเป็นต้องตั้งค่าคือเพื่อให้วาดรูปหลายเหลี่ยมในลักษณะที่ยื่นออกมา ซึ่งหมายความว่าให้วาดรูปหลายเหลี่ยมที่ระดับความสูงที่กำหนดไว้ แล้วขยายรูปหลายเหลี่ยมนั้นลงไปจนถึงพื้น ซึ่งทำให้รูปหลายเหลี่ยมมีความสูงเหมือนกล่อง (ดังที่เห็นในรูปภาพด้านบน) ซึ่งยังกำหนดให้เราตั้งค่าโหมดระดับความสูงในรูปหลายเหลี่ยมด้วย เราจึงต้องโหลดค่าคงที่ AltitudeMode ด้านบน หากต้องการยื่นรูปหลายเหลี่ยม คุณต้องตั้งค่าเป็น ABSOLUTE หรือ RELATIVE_TO_GROUND เพื่อให้ได้ตำแหน่งที่ถูกต้องจากระดับความสูงที่จุดยอดของรูปหลายเหลี่ยม

โค้ดจะสร้างออบเจ็กต์ตัวอักษรที่มีพร็อพเพอร์ตี้เหล่านี้ ซึ่งจะใช้สร้างออบเจ็กต์ Polygon3DElement ดังที่แสดงได้

  const polygonOptions = {
    strokeColor: "#EA433580",
    strokeWidth: 4,
    fillColor: "#0000FF80",
    altitudeMode: "ABSOLUTE",
    extruded: true,
    drawsOccludedSegments: true,
  }

  const towerPolygon = new google.maps.maps3d.Polygon3DElement(polygonOptions);

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

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

  towerPolygon.outerCoordinates = [
    { lat: 43.6427196, lng: -79.3876802, altitude: 600 },
    { lat: 43.6421742, lng: -79.3869184, altitude: 600 },
    { lat: 43.643001, lng: -79.3866475, altitude: 600 },
    { lat: 43.6427196, lng: -79.3876802, altitude: 600 }
  ];

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

  map3DElement.append(towerPolygon);

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

<!DOCTYPE html>
<html>

<head>
    <title>3D Maps Codelab</title>
    <style>
        html,
        body {
            height: 100%;
            margin: 0;
            padding: 0;
        }
    </style>
</head>

<body>
    <script async defer>
        (g => { var h, a, k, p = "The Google Maps JavaScript API", c = "google", l = "importLibrary", q = "__ib__", m = document, b = window; b = b[c] || (b[c] = {}); var d = b.maps || (b.maps = {}), r = new Set, e = new URLSearchParams, u = () => h || (h = new Promise(async (f, n) => { await (a = m.createElement("script")); e.set("libraries", [...r] + ""); for (k in g) e.set(k.replace(/[A-Z]/g, t => "_" + t[0].toLowerCase()), g[k]); e.set("callback", c + ".maps." + q); a.src = `https://maps.${c}apis.com/maps/api/js?` + e; d[q] = f; a.onerror = () => h = n(Error(p + " could not load.")); a.nonce = m.querySelector("script[nonce]")?.nonce || ""; m.head.append(a) })); d[l] ? console.warn(p + " only loads once. Ignoring:", g) : d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)) })({
            key: "YOUR_API_KEY",
            v: "alpha",
        });
    </script>
    <script>
        async function init() {
            const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");

            const map3DElement = new Map3DElement({
                center: { lat: 43.6425, lng: -79.3871, altitude: 400 },
                range: 1000,
                tilt: 60,
                mode: MapMode.SATELLITE,
            });

            const { Polygon3DElement, AltitudeMode } = await google.maps.importLibrary("maps3d");

            const polygonOptions = {
                strokeColor: "#EA433580",
                strokeWidth: 4,
                fillColor: "#0000FF80",
                fillOpacity: 0.2,
                altitudeMode: "ABSOLUTE",
                extruded: true,
                drawsOccludedSegments: true,
            }

            const towerPolygon = new google.maps.maps3d.Polygon3DElement(polygonOptions);

            towerPolygon.outerCoordinates = [
                { lat: 43.6427196, lng: -79.3876802, altitude: 600 },
                { lat: 43.6421742, lng: -79.3869184, altitude: 600 },
                { lat: 43.643001, lng: -79.3866475, altitude: 600 },
                { lat: 43.6427196, lng: -79.3876802, altitude: 600 }
            ];

            map3DElement.append(towerPolygon);

            document.body.append(map3DElement);
        }
        
        init();
    </script>

</body>
</html>

หากโค้ดถูกต้อง คุณควรเห็นหน้าเว็บที่มีแผนที่ 3 มิติและรูปหลายเหลี่ยมดังต่อไปนี้

มุมมองที่คุณควรเห็นเมื่อโค้ดเสร็จสมบูรณ์

คุณสร้างแผนที่ 3 มิติแผนที่แรกโดยใช้ Google Maps Platform เรียบร้อยแล้ว ซึ่งรวมถึงการโหลด Maps JavaScript API, การสร้างแผนที่ 3 มิติ และการเพิ่มรูปหลายเหลี่ยมที่ยื่นออกมา

7. ขั้นตอนถัดไปคือ

ใน Codelab นี้ คุณได้เรียนรู้ข้อมูลเบื้องต้นเกี่ยวกับสิ่งที่คุณทําได้ด้วย Maps JavaScript API ถัดไป ให้ลองเพิ่มองค์ประกอบต่อไปนี้ลงในแผนที่

  • เพิ่มปุ่มเพื่อเปิดและปิดจุดที่น่าสนใจ
  • เพิ่มเส้นที่แสดงเส้นทางไปและกลับจากสถานที่ต่างๆ
  • ตั้งค่าข้อจำกัดขอบเขตบางอย่างเพื่อควบคุมตำแหน่งที่ผู้ใช้สามารถย้ายมุมมองได้
  • ดูไลบรารีเพิ่มเติมที่ใช้ได้กับ Maps JavaScript API ซึ่งเปิดใช้บริการเพิ่มเติม เช่น สถานที่หรือการค้นหาเส้นทาง

หากต้องการดูวิธีอื่นๆ เพิ่มเติมในการใช้งาน Google Maps Platform และ 3 มิติบนเว็บ ให้ไปที่ลิงก์ต่อไปนี้