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