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

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

Maps SDK สำหรับ Android ใช้ระบบพิกัดต่อไปนี้

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

พิกัดโลก

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

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

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

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

พิกัดพิกเซล

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

pixelCoordinate = worldCoordinate * 2zoomLevel

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

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

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

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

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

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

แผนที่โลกแบ่งออกเป็น 4 แถวและ 4 คอลัมน์ของไทล์

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

ตัวอย่าง

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

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