พิกัดแผนที่และพิกัดแผนที่ย่อย

เลือกแพลตฟอร์ม Android iOS JavaScript

Maps JavaScript API ใช้ระบบพิกัดต่อไปนี้

  • ค่าละติจูดและลองจิจูดซึ่งอ้างอิงจุดบนโลกโดยไม่ซ้ำกัน (Google ใช้มาตรฐาน World Geodetic System WGS84)
  • พิกัดโลกซึ่งอ้างอิงจุดบนแผนที่อย่างเจาะจง
  • พิกัดพิกเซล ซึ่งอ้างอิงพิกเซลที่เฉพาะเจาะจงบนแผนที่ที่การซูมระดับหนึ่งๆ
  • พิกัดของชิ้นส่วนแผนที่ ซึ่งอ้างอิงถึงชิ้นส่วนแผนที่ที่เฉพาะเจาะจงบนแผนที่ที่ระดับการซูมหนึ่งๆ

พิกัดโลก

เมื่อใดก็ตามที่ API ต้องการแปลงตำแหน่งในโลกเป็นตำแหน่งบนแผนที่ ระบบจะแปลงค่าละติจูดและลองจิจูดเป็นพิกัดโลกก่อน API นี้ใช้การโปรเจ็กต์ Mercator เพื่อทำการแปลง

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

พิกัดโลกใน Google Maps จะวัดจากจุดเริ่มต้นของการฉายภาพ Mercator (มุมตะวันตกเฉียงเหนือของแผนที่ที่ลองจิจูด 180 องศาและละติจูดประมาณ 85 องศา) และเพิ่มขึ้นในx ทิศทางไปทางตะวันออก (ขวา) และเพิ่มขึ้นในy ทิศทางไปทางใต้ (ลง) เนื่องจากข้อมูลแผนที่ Mercator พื้นฐานของ Google Maps มีขนาด 256 x 256 พิกเซล พื้นที่พิกัดโลกที่ใช้งานได้จึงเท่ากับ {0-256}, {0-256}

โปรดทราบว่าการฉายภาพเมอร์เคเตอร์มีความกว้างตามแนวลองจิจูดแบบจำกัด แต่มีความสูงตามแนวละติจูดแบบไม่จำกัด เราตัดภาพแผนที่ฐานโดยใช้การฉาย Mercator ที่ประมาณ +/- 85 องศาเพื่อให้แผนที่ที่ได้เป็นรูปสี่เหลี่ยมจัตุรัส ซึ่งช่วยให้การเลือกชิ้นส่วนแผนที่ทำได้ง่ายขึ้น โปรดทราบว่าการฉายอาจสร้างพิกัดโลกที่อยู่นอกพื้นที่พิกัดที่ใช้งานได้ของแผนที่ฐาน เช่น หากคุณพล็อตจุดใกล้กับขั้วโลกมาก

พิกัดพิกเซล

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

pixelCoordinate = worldCoordinate * 2zoomLevel

จากสมการข้างต้น โปรดทราบว่าระดับการซูมแต่ละระดับที่เพิ่มขึ้นจะใหญ่ขึ้น 2 เท่าทั้งในด้าน x และ y ดังนั้น การซูมแต่ละระดับที่สูงขึ้นจะส่งผลให้ความละเอียดสูงขึ้น 4 เท่าจากระดับก่อนหน้า ตัวอย่างเช่น เมื่อซูมระดับ 1 แผนที่ประกอบด้วยไทล์ขนาด 256x256 พิกเซล 4 รายการ ซึ่งทำให้พื้นที่พิกเซลมีขนาด 512x512 เมื่อซูมระดับ 19 พิกเซล x และ y แต่ละพิกเซลบนแผนที่จะอ้างอิงได้โดยใช้ค่าระหว่าง 0 ถึง 256 * 219

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

ตอนนี้เรามีวิธีระบุตำแหน่งแต่ละแห่งบนแผนที่ได้อย่างแม่นยำแล้วไม่ว่าจะซูมระดับใด Maps JavaScript API จะสร้างวิวพอร์ตโดยพิจารณาจากจุดศูนย์กลางระดับการซูมของแผนที่ (เป็น LatLng) และขนาดขององค์ประกอบ DOM ที่บรรจุอยู่ และแปลขอบเขตนี้ให้เป็นพิกัดพิกเซล จากนั้น API จะกำหนดไทล์แผนที่ทั้งหมดที่อยู่ภายในขอบเขตพิกเซลที่ระบุอย่างมีเหตุผล แต่ละชิ้นส่วนแผนที่เหล่านี้จะอ้างอิงโดยใช้ พิกัดชิ้นส่วนแผนที่ ซึ่งทำให้การแสดงภาพแผนที่ง่ายขึ้นอย่างมาก

พิกัดแผนที่ย่อย

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

ไทล์ใน Google Maps จะได้รับการระบุหมายเลขจากต้นทางเดียวกันกับของพิกเซล สำหรับการใช้การฉาย Mercator ของ Google ไทล์ต้นทางจะอยู่ตรงมุมตะวันตกเฉียงเหนือของแผนที่เสมอ โดยค่า x จะเพิ่มขึ้นจากตะวันตกไปตะวันออก และค่า y จะเพิ่มขึ้นจากเหนือไปใต้ ระบบจะจัดทำดัชนีไทล์โดยใช้พิกัด x,y จากต้นทางนั้น ตัวอย่างเช่น เมื่อซูมระดับ 2 ซึ่งโลกถูกแบ่งออกเป็น 16 ไทล์ แต่ละไทล์จะอ้างอิงด้วยคู่ x,y ที่ไม่ซ้ำกัน ดังนี้

แผนที่โลกที่แบ่งออกเป็นสี่แถวและสี่คอลัมน์ของชิ้นส่วน

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

ตัวอย่าง

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

หากต้องการดูวิธีคํานวณพิกัด ให้ดูโค้ด