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

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

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

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

พิกัดโลก

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

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

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

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

พิกัดพิกเซล

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

pixelCoordinate = worldCoordinate * 2zoomLevel

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

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

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

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

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

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

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

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

ตัวอย่าง

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

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