SDK bản đồ dành cho iOS sử dụng các hệ thống toạ độ sau:
- Giá trị vĩ độ và kinh độ tham chiếu đến một điểm trên thế giới. (Google sử dụng Trắc địa thế giới Tiêu chuẩn hệ thống WGS84.)
- Toạ độ thế giới, tham chiếu đến một điểm duy nhất trên bản đồ.
- Các toạ độ pixel, tham chiếu một pixel cụ thể trên bản đồ ở mức thu phóng cụ thể.
- Toạ độ ô, tham chiếu đến một ô cụ thể trên bản đồ tại mức thu phóng cụ thể.
Toạ độ thế giới
Bất cứ khi nào API cần dịch một vị trí trên thế giới sang một vị trí trên bản đồ, trước tiên nó sẽ chuyển các giá trị vĩ độ và kinh độ thành world. API này sử dụng Đơn vị đo lường phép chiếu để thực hiện quá trình dịch này.
Để thuận tiện trong việc tính toán toạ độ pixel (xem bên dưới) chúng tôi giả định bản đồ ở mức thu phóng 0 là một ô của kích thước ô cơ sở. Sau đó, chúng tôi xác định toạ độ thế giới tương ứng với toạ độ điểm ảnh lúc thu phóng 0, sử dụng phép chiếu để chuyển đổi vĩ độ và kinh độ thành vị trí pixel trên ô cơ sở này. Toạ độ thế giới này là một toạ độ nổi giá trị điểm được đo từ điểm gốc của phép chiếu bản đồ đến vị trí cụ thể. Lưu ý rằng vì giá trị này là giá trị dấu phẩy động, nó có thể chính xác hơn nhiều so với độ phân giải hiện tại của hình ảnh bản đồ đang được hiển thị. Một toạ độ thế giới không phụ thuộc vào mức thu phóng hiện tại, nói cách khác.
Toạ độ thế giới trong Google Maps được đo từ Mercator
điểm gốc của phép chiếu (góc tây bắc của bản đồ 180 độ
kinh độ và vĩ độ xấp xỉ 85 độ) và tăng lên trong
hướng x
về phía đông (phải) và tăng lên
hướng y
về phía nam (xuống dưới). Vì
Ô thông cơ bản của Google Maps có kích thước 256 x 256 pixel, có thể sử dụng
không gian toạ độ thế giới là {0-256}, {0-256}
.
Lưu ý rằng phép chiếu Mercator có một hữu hạn chiều rộng theo chiều dọc nhưng chiều cao vô hạn theo vĩ độ. Chúng tôi đã ngừng hình ảnh bản đồ cơ sở sử dụng phép chiếu Mercator với tốc độ xấp xỉ +/- 85 độ để làm cho hình dạng bản đồ thu được là hình vuông, cho phép logic dễ dàng hơn để chọn thẻ thông tin. Lưu ý rằng phép chiếu có thể tạo ra toạ độ thế giới bên ngoài không gian toạ độ hữu dụng của bản đồ cơ sở nếu bạn vẽ biểu đồ rất gần các cực.
Toạ độ pixel
Tọa độ pixel tham chiếu một pixel cụ thể trên bản đồ ở mức thu phóng cụ thể, trong khi toạ độ thế giới phản ánh các vị trí tuyệt đối trên phép chiếu cụ thể. Toạ độ pixel được tính bằng cách sử dụng công thức:
pixelCoordinate = worldCoordinate * 2zoomLevel
Từ phương trình trên, lưu ý rằng mỗi mức thu phóng tăng dần
lớn gấp đôi trong cả x
và y
đường đi. Do đó, mỗi mức thu phóng cao hơn dẫn đến độ phân giải bốn
cao gấp đôi so với mức trước đó. Ví dụ: ở mức thu phóng 1,
bản đồ bao gồm 4 ô có kích thước 256x256 pixel, tạo ra một không gian pixel
từ 512x512. Ở mức thu phóng 19, mỗi pixel x
và y
pixel
trên bản đồ có thể được tham chiếu bằng cách sử dụng một giá trị giữa
0 và 256 * 219.
Do chúng tôi dựa vào toạ độ thế giới dựa trên kích thước ô của bản đồ, phần số nguyên của toạ độ pixel có tác dụng xác định điểm ảnh chính xác tại vị trí đó trong mức thu phóng hiện tại. Lưu ý rằng đối với mức thu phóng 0, toạ độ pixel bằng với toạ độ thế giới.
Hiện nay, chúng ta đã có cách để biểu thị chính xác từng vị trí trên bản đồ,
ở mỗi mức thu phóng. SDK bản đồ dành cho iOS tạo một khung nhìn
dựa vào trung tâm mức thu phóng của bản đồ (dưới dạng LatLng
) và
kích thước của phần tử DOM chứa, và
sẽ chuyển khung giới hạn này thành toạ độ pixel. Sau đó, API xác định
về mặt logic tất cả ô bản đồ nằm trong giới hạn pixel đã cho. Mỗi
các ô bản đồ này được tham chiếu bằng cách sử dụng
toạ độ ô giúp đơn giản hoá đáng kể việc hiển thị bản đồ
hình ảnh.
Toạ độ ô
API không thể tải tất cả hình ảnh bản đồ cùng một lúc cho các mức thu phóng cao hơn. Thay vào đó, API sẽ chia nhỏ hình ảnh ở mỗi mức thu phóng thành một tập hợp các ô bản đồ, được sắp xếp hợp lý theo thứ tự mà Google Play hiểu được. Khi bản đồ cuộn đến một vị trí mới hoặc đến một vị trí mới mức thu phóng, API sẽ xác định ô nào cần bằng cách sử dụng toạ độ pixel và chuyển các giá trị đó thành một nhóm thẻ thông tin cần truy xuất. Các toạ độ ô này được chỉ định bằng một sơ đồ giúp bạn dễ dàng xác định thẻ thông tin nào chứa hình ảnh cho bất kỳ điểm nhất định nào.
Các ô trong Google Maps được đánh số từ cùng một điểm gốc với
cho pixel. Đối với việc triển khai phép chiếu Mercator của Google, phương thức
ô gốc luôn ở góc Tây Bắc
của bản đồ, với x
giá trị tăng từ hướng tây đến
giá trị phía đông và y
tăng từ bắc xuống nam. Thẻ thông tin
được lập chỉ mục bằng cách sử dụng toạ độ x,y
từ nguồn gốc đó. Để
ví dụ: ở mức thu phóng 2, khi trái đất được chia thành 16 ô,
mỗi thẻ thông tin có thể được tham chiếu bằng một cặp x,y
duy nhất:
Lưu ý rằng bằng cách chia toạ độ pixel cho kích thước ô (256) và lấy phần nguyên của kết quả, bạn tạo ra sản phẩm phụ toạ độ ô ở mức thu phóng hiện tại.
Ví dụ:
Ví dụ sau đây hiển thị các toạ độ cho Chicago, IL: giá trị vĩ độ/kinh độ, toạ độ thế giới, toạ độ pixel và ô toạ độ. Sử dụng điều khiển thu phóng để xem các giá trị toạ độ ở nhiều mức mức thu phóng.
Để xem cách tính toạ độ, xem mã.