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

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