Toạ độ bản đồ và ô

Chọn nền tảng: Android iOS JavaScript

Maps SDK cho Android sử dụng các hệ thống toạ độ sau:

  • Giá trị vĩ độ và kinh độ, tham chiếu đến một điểm duy nhất trên thế giới. Google sử dụng tiêu chuẩn Hệ thống trắc địa thế giới WGS84.
  • Toạ độ thế giới, tham chiếu đến một điểm duy nhất trên bản đồ.
  • Toạ độ pixel, tham chiếu đến một pixel cụ thể trên bản đồ ở một mức thu phóng cụ thể.
  • Tọa độ ô vuông, tham chiếu đến một ô cụ thể trên bản đồ ở một mức thu phóng cụ thể.

Toạ độ thế giới

Bất cứ khi nào cần dịch một vị trí trên thế giới thành một vị trí trên bản đồ, trước tiên, API sẽ dịch các giá trị vĩ độ và kinh độ thành một toạ độ thế giới. API này sử dụng phép chiếu Mercator để thực hiện việc dịch này.

Để thuận tiện cho 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 ô duy nhất có kích thước ô cơ sở. Sau đó, chúng ta xác định toạ độ thế giới tương ứng với toạ độ pixel ở mứ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 giá trị dấu phẩy động được đo từ điểm gốc của phép chiếu bản đồ đến vị trí cụ thể. Xin lưu ý rằng vì giá trị này là giá trị dấu phẩy động, nên giá trị này 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 hiển thị. Nói cách khác, toạ độ thế giới không phụ thuộc vào mức thu phóng hiện tại.

Toạ độ thế giới trong Google Maps được đo từ gốc của phép chiếu Mercator (góc tây bắc của bản đồ ở 180 độ kinh độ và khoảng 85 độ vĩ độ) và tăng theo hướng x về phía đông (phải) và tăng theo hướng y về phía nam (xuống). Vì ô cơ bản của Google Maps theo phép chiếu Mercator có kích thước 256 x 256 pixel, nên không gian toạ độ thế giới có thể sử dụng là {0-256}, {0-256}.

Xin lưu ý rằng phép chiếu Mercator có chiều rộng hữu hạn theo chiều dọc nhưng chiều cao vô hạn theo chiều ngang. Chúng tôi cắt hình ảnh bản đồ cơ sở bằng cách sử dụng phép chiếu Mercator ở khoảng +/- 85 độ để tạo ra hình dạng bản đồ vuông, giúp bạn dễ dàng chọn ô hơn. Xin lưu ý rằng một phép chiếu có thể tạo ra toạ độ thế giới bên ngoài không gian toạ độ có thể sử dụng của bản đồ cơ sở nếu bạn vẽ rất gần các cực, chẳng hạn như vậy.

Toạ độ pixel

Toạ độ pixel tham chiếu đến một pixel cụ thể trên bản đồ ở một mức thu phóng cụ thể, trong khi toạ độ thế giới phản ánh vị trí tuyệt đối trên một phép chiếu nhất định. Toạ độ pixel được tính bằng công thức sau:

pixelCoordinate = worldCoordinate * 2zoomLevel

Từ phương trình trên, lưu ý rằng mỗi mức thu phóng tăng lên sẽ lớn gấp đôi theo cả hướng x và y. Do đó, mỗi mức thu phóng cao hơn sẽ có độ phân giải cao gấp 4 lần 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, dẫn đến không gian pixel từ 512x512. Ở mức thu phóng 19, mỗi pixel x và y trên bản đồ có thể được tham chiếu bằng một giá trị từ 0 đến 256 * 219.

Vì chúng tôi dựa vào toạ độ thế giới theo kích thước ô của bản đồ, nên phần nguyên của toạ độ điểm ảnh có tác dụng xác định chính xác điểm ảnh tại vị trí đó ở mức thu phóng hiện tại. Xin lưu ý rằng đối với mức thu phóng 0, toạ độ pixel sẽ bằng với toạ độ thế giới.

Các hệ toạ độ này biểu thị chính xác từng vị trí trên bản đồ, ở mỗi mức thu phóng. Maps SDK cho Android tạo một khung hiển thị dựa trên mức thu phóng, tâm của bản đồ dưới dạng LatLng và kích thước của phần tử DOM chứa, đồng thời chuyển đổi khung giới hạn này thành toạ độ pixel. Sau đó, API sẽ xác định một cách hợp lý tất cả các ô bản đồ nằm trong ranh giới pixel đã cho. Bạn tham chiếu từng ô bản đồ này bằng cách sử dụng tọa độ ô vuông. Việc này giúp đơn giản hoá đáng kể việc hiển thị hình ảnh bản đồ.

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 đó, nó chia 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 theo một thứ tự hợp lý mà ứng dụng của bạn có thể sử dụng. Khi bản đồ di chuyển đến một vị trí mới hoặc một mức thu phóng mới, API sẽ xác định những ô cần thiết bằng cách sử dụng toạ độ pixel, sau đó chuyển các giá trị đó thành một tập hợp các ô để truy xuất. Thư viện này chỉ định các tọa độ ô vuông này bằng cách sử dụng một sơ đồ giúp bạn dễ dàng xác định ô nào chứa hình ảnh cho một điểm bất kỳ.

Các ô trong Google Maps được đánh số từ cùng một nguồn với các ô cho pixel. Đối với việc triển khai phép chiếu Mercator của Google, ô gốc luôn nằm ở góc tây bắc của bản đồ, với các giá trị x tăng từ tây sang đông và các giá trị y tăng từ bắc xuống nam. Các ô đượ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 ô có thể được tham chiếu bằng một cặp x,y duy nhất:

Bản đồ thế giới được chia thành 4 hàng và 4 cột ô.

Xin 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 sẽ tạo ra toạ độ ô ở cấp độ thu phóng hiện tại.

Ví dụ

Ví dụ sau đây cho thấy toạ độ của Chicago, IL: giá trị vĩ độ/kinh độ, toạ độ thế giới, toạ độ pixel và toạ độ ô. Sử dụng chế độ thu phóng để xem các giá trị toạ độ ở nhiều mức thu phóng.

Để xem cách tính toạ độ, hãy xem mã.