API JavaScript của Maps 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 đồ.
- Các toạ độ pixel (tham chiếu 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 API 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 này sẽ dịch các giá trị vĩ độ và kinh độ thành toạ độ thế giới. API này sử dụng tính năng phép chiếu Mercator để thực hiện quá trình 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 rằng bản đồ ở mức thu phóng 0 là một ô duy nhấ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ạ độ pixel ở mức thu phóng bằ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ị dấu phẩy động được đo từ điểm gốc của phép chiếu bản đồ đến một vị trí cụ thể. Lưu ý rằng vì 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, một 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ừ điểm 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 lên theo hướng x
về phía đông (phải) và tăng lên theo hướng y
về phía nam (xuống dưới). Vì thẻ thông tin Mercator cơ bản của 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}
.
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 vĩ độ. Chúng tôi cắt bỏ hình ảnh bản đồ cơ sở bằng phép chiếu Mercator ở khoảng +/- 85 độ để làm cho hình dạng bản đồ thu được là hình vuông, cho phép chọn ô dễ dàng hơn. 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ột mức thu phóng cụ thể, trong khi các toạ độ trên thế giới phản ánh các vị trí tuyệt đối trên một phép chiếu nhất định. Các 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 mức thu phóng tăng dầ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ẽ dẫn đến độ phân giải cao hơn 4 lần so với mức trước đó. Ví dụ: ở cấp độ 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 cách sử dụng giá trị từ 0 đến 256 * 219.
Vì chúng tôi dựa vào toạ độ thế giới dựa 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 pixel chính xác 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 bằng toạ độ thế giới.
Giờ đây, chúng tôi 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. API JavaScript của Maps xây dựng một khung nhìn dựa trên 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, đồng thời chuyển hộp giới hạn này thành các toạ độ pixel. Sau đó, API sẽ xác định theo logic tất cả các ô bản đồ nằm trong giới hạn pixel đã cho. 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 mức thu phóng cao hơn. Thay vào đó, API sẽ 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 hợp lý theo thứ tự mà ứng dụng hiểu được. Khi bản đồ cuộn đến một vị trí mới hoặc đến một mức thu phóng mới, API sẽ xác định 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 các thẻ thông tin cần truy xuất. Các toạ độ ô này được gán bằng một lược đồ giúp bạn dễ dàng xác định ô nào chứa hình ảnh cho một điểm nhất định bất kỳ.
Thẻ thông tin trong Google Maps được đánh số trên cùng một nguồn gốc với pixel. Để Google triển khai phép chiếu Mercator, ô 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à giá trị y
tăng từ bắc xuống nam. Thẻ thông tin được lập chỉ mục bằng toạ độ x,y
trên 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:
Lưu ý rằng bằng cách chia toạ độ pixel cho kích thước thẻ thông tin (256) và lấy các phần nguyên của kết quả, bạn sẽ tạo ra toạ độ của thẻ thông tin dưới dạng sản phẩm phụ ở mức thu phóng hiện tại.
Ví dụ:
Ví dụ sau đây hiển thị toạ độ cho Chicago, IL: giá trị vĩ độ/kinh độ, toạ độ thế giới, toạ độ pixel và toạ độ ô. Sử dụng tuỳ chọn đ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ạ độ, hãy xem mã.