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

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

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

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

พิกัดโลก

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

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

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

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

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

ตัวอย่าง

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

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