Tọa độ bản đồ và thẻ thông tin

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

API Maps JavaScript sử dụng các hệ toạ độ sau:

  • Giá trị vĩ độ và kinh độ, tham chiếu đến một điểm trên thế giới một cách riêng biệt. (Google sử dụng tiêu chuẩn Hệ thống toạ độ địa lý thế giới WGS84.)
  • Toạ độ thế giới, tham chiếu đến một điểm trên bản đồ một cách duy nhất.
  • Toạ độ pixel, tham chiếu đến một pixel cụ thể trên bản đồ ở một mức thu phóng cụ thể.
  • Toạ độ ô 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 toạ độ thế giới. API sử dụng chiếu Mercator để thực hiện phép dịch này.

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

Toạ độ thế giới trong Google Maps được đo lường từ gốc của phép chiếu Mercator (góc tây bắc của bản đồ ở kinh độ 180 độ và vĩ độ khoảng 85 độ) và tăng theo hướng x về phía đông (phải) và tăng theo hướng y về phía nam (dưới). Vì thẻ thông tin cơ bản của Mercator trên Google Maps 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 dọc có giới hạn nhưng chiều cao theo vĩ độ là vô hạn. 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 hình dạng bản đồ hình vuông, cho phép logic dễ dàng hơn để lựa chọn thẻ thông tin. Xin lưu ý rằng một phép chiếu có thể tạo ra tọa độ 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 lập biểu đồ rất gần các cực.

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 các vị trí tuyệt đối trên một phép chiếu nhất định. Toạ độ pixel được tính theo công thức sau:

pixelCoordinate = worldCoordinate * 2zoomLevel

Từ phương trình trên, hãy lưu ý rằng mỗi cấp độ thu phóng tăng lên gấp đôi theo cả hướng xy. Do đó, mỗi cấp độ thu phóng cao hơn sẽ dẫn đến độ phân giải cao hơn gấp bốn lần so với cấp độ trước đó. Ví dụ: ở mức thu phóng 1, bản đồ bao gồm 4 ô 256x256 pixel, tạo ra không gian pixel từ 512x512. Ở mức thu phóng 19, mỗi pixel xy trên bản đồ có thể được tham chiếu bằng cách sử dụng một giá trị từ 0 đến 256 * 219.

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

Giờ đây, chúng ta có cách để biểu thị chính xác từng vị trí trên bản đồ, ở từng cấp độ thu phóng. API Maps JavaScript tạo một khung nhìn dựa trên tâm cấp độ 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, đồng thời dịch hộp giới hạn này thành toạ độ pixel. Sau đó, API xác định tất cả thẻ thông tin trên bản đồ nằm trong giới hạn pixel đã cho theo logic. Mỗi ô bản đồ này được tham chiếu bằng tọa độ ô, 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 cấp độ thu phóng cao hơn. Thay vào đó, API chia hình ảnh ở mỗi cấp độ thu phóng thành một tập hợp các ô bản đồ, được sắp xếp theo thứ tự mà ứng dụng hiểu được. Khi một bản đồ cuộn đến một vị trí mới hoặc đến một cấp độ thu phóng mới, API sẽ xác định những thẻ thông tin cần thiết bằng cách sử dụng toạ độ pixel và dịch các giá trị đó thành một tập hợp thẻ thông tin để truy xuất. Các toạ độ thẻ thông tin này được chỉ định bằng một lược đồ giúp dễ dàng xác định thẻ thông tin nào chứa hình ảnh cho bất kỳ điểm nào.

Thẻ thông tin trong Google Maps được đánh số từ cùng một gốc như pixel. Đối với việc triển khai phép chiếu Mercator của Google, thẻ 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 dần từ tây sang đông và các giá trị y tăng dần từ bắc xuống nam. Thẻ thông tin được lập chỉ mục bằng tọa độ 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 thẻ thông tin.

Xin lưu ý rằng bằng cách chia toạ độ pixel cho kích thước ô (256) và lấy phần số nguyên của kết quả, bạn sẽ tạo ra một sản phẩm phụ là toạ độ ô ở mức 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ạ độ thẻ thông tin. Sử dụng nút điều khiển thu phóng để xem các giá trị toạ độ ở nhiều mức thu phóng.

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