Maps JavaScript API menggunakan sistem koordinat berikut:
- Nilai garis lintang dan garis bujur yang mereferensikan titik di dunia secara unik. (Google menggunakan standar World Geodetic System WGS84.)
- Koordinat dunia yang mereferensikan titik di peta secara unik.
- Koordinat piksel yang mereferensikan piksel tertentu di peta pada tingkat zoom tertentu.
- Koordinat ubin yang mereferensikan ubin tertentu di peta pada tingkat zoom tertentu.
Koordinat dunia
Setiap kali perlu menerjemahkan lokasi di dunia menjadi lokasi di peta, API tersebut akan menerjemahkan nilai lintang dan bujur menjadi koordinat dunia terlebih dahulu. API tersebut menggunakan proyeksi Mercator untuk melakukan terjemahan ini.
Untuk memudahkan perhitungan koordinat piksel (lihat di bawah), kami mengasumsikan peta yang berada pada tingkat zoom 0 adalah ubin tunggal dari ukuran ubin dasar. Kemudian, kita mendefinisikan koordinat dunia sesuai dengan koordinat piksel pada tingkat zoom 0, menggunakan proyeksi untuk mengonversi garis lintang & bujur menjadi posisi piksel pada ubin dasar ini. Koordinat dunia adalah nilai floating point yang diukur dari asal proyeksi peta ke lokasi tertentu. Perhatikan bahwa nilai yang berupa nilai floating point ini mungkin jauh lebih tepat daripada resolusi gambar peta yang sedang ditampilkan. Dengan kata lain, koordinat dunia tidak bergantung pada tingkat zoom yang ada.
Koordinat dunia di Google Maps diukur dari asal proyeksi Mercator
(sudut barat laut peta pada garis bujur 180 derajat
dan garis lintang sekitar 85 derajat) lalu bertambah
ke arah x
menuju timur (kanan) dan bertambah
ke arah y
menuju selatan (bawah). Karena
ubin Google Maps Mercator dasar berukuran 256x256 piksel, ruang koordinat
dunia yang dapat digunakan adalah {0-256}, {0-256}
.
Perhatikan bahwa proyeksi Mercator memiliki lebar membujur yang terbatas, sedangkan ketinggian melintangnya tidak terbatas. Kita memotong citra peta dasar menggunakan proyeksi Mercator sekitar +/- 85 derajat untuk menghasilkan peta berbentuk kotak, sehingga memudahkan logika pemilihan ubin. Perhatikan bahwa proyeksi mungkin menghasilkan koordinat dunia di luar ruang koordinat peta dasar yang dapat digunakan, misalnya, jika Anda menandai tempat yang sangat dekat dengan kutub.
Koordinat piksel
Koordinat piksel mereferensikan piksel tertentu di peta pada tingkat zoom tertentu, sedangkan koordinat dunia mencerminkan lokasi absolut di proyeksi yang ditentukan. Koordinat piksel dihitung dengan formula berikut:
pixelCoordinate = worldCoordinate * 2zoomLevel
Dari persamaan di atas, perhatikan bahwa setiap tingkat zoom yang bertambah akan dua kali lebih tinggi pada arah x
dan y
. Oleh karena itu, setiap tingkat zoom yang lebih tinggi akan menghasilkan resolusi empat kali lebih tinggi daripada tingkat sebelumnya. Misalnya, pada tingkat zoom 1, peta terdiri dari 4 buah ubin berukuran 256x256 piksel, sehingga menghasilkan ruang piksel dari 512x512. Pada tingkat zoom 19, setiap piksel x
dan y
di peta dapat direferensikan menggunakan nilai antara 0 dan 256 * 219.
Karena kita menentukan koordinat dunia berdasarkan ukuran ubin peta, bilangan bulat pada koordinat piksel akan memiliki efek yang mengidentifikasi piksel yang tepat di lokasinya pada tingkat zoom yang ada. Perhatikan bahwa untuk tingkat zoom 0, koordinat piksel sama dengan koordinat dunia.
Sekarang, kita memiliki cara yang akurat untuk menunjukkan setiap lokasi di peta pada setiap tingkat zoom. Maps JavaScript API membuat area pandang berdasarkan pusat tingkat zoom peta (sebagai LatLng
) dan ukuran elemen DOM yang memuatnya, serta menerjemahkan kotak pembatas ini menjadi koordinat piksel. Kemudian, API tersebut secara logis menentukan semua ubin peta yang terletak dalam batas-batas piksel yang ditentukan. Setiap ubin peta ini direferensikan menggunakan
koordinat ubin yang sangat menyederhanakan tampilan citra peta.
Koordinat ubin
API tersebut tidak dapat memuat semua citra peta sekaligus untuk tingkat zoom yang lebih tinggi. Sebagai gantinya, API membagi citra pada setiap tingkat zoom menjadi satu set ubin peta, dengan susunan logis yang urutannya mudah dipahami aplikasi. Saat peta di-scroll ke lokasi baru atau ke tingkat zoom baru, API akan menentukan ubin yang diperlukan menggunakan koordinat piksel, lalu menerjemahkan nilai tersebut menjadi satu set ubin yang akan diambil. Koordinat ubin ini ditetapkan menggunakan skema yang secara logis memudahkan dalam mengetahui ubin yang berisi citra untuk titik yang ditentukan.
Ubin di Google Maps diberi nomor dari asal yang sama dengan piksel. Untuk penerapan proyeksi Mercator oleh Google, ubin asal selalu berada di sudut barat laut peta, dengan nilai x
bertambah dari barat ke timur dan nilai y
bertambah dari utara ke selatan. Ubin
diindeks menggunakan koordinat x,y
dari asal tersebut. Misalnya,
pada tingkat zoom 2, saat bumi dibagi menjadi 16 ubin,
setiap ubin dapat direferensikan oleh pasangan x,y
khusus:
Perhatikan bahwa dengan membagi koordinat piksel dengan ukuran ubin (256) dan mengambil bilangan bulat dari hasilnya, Anda akan memperoleh hasil sampingan koordinat ubin pada tingkat zoom yang ada.
Contoh
Contoh berikut menampilkan koordinat untuk Chicago, IL, yaitu nilai lintang/bujur, koordinat dunia, koordinat piksel, dan koordinat ubin. Gunakan kontrol zoom untuk melihat nilai koordinat pada berbagai tingkat zoom.
Untuk mengetahui cara perhitungan koordinat, lihat kodenya.