Ubin Peta hanyalah pembagian dunia ke dalam grup yang diindeks {i>grid.<i} Memungkinkan Anda mengakses dan memanfaatkan data peta secara efisien dan dinamis pada beberapa skala kartografi. Map Tiles API memberi Anda akses ke beberapa geodataset tematik, termasuk yang diseleksi Google:
Petak gambar roadmap berdasarkan data topografi vektor dengan gaya kartografi.
Ortofotografi yang diambil oleh kamera satelit dan udara yang memberikan gambar bumi dari atas ke bawah.
Peta kontur Hillshade.
Ubin Peta 2D semuanya memiliki georeferensi dan sejajar satu sama lain. Mereka dipilih berdasarkan luas area geografis dari area pandang dan tingkat zoom. Tingkat zoom berkisar dari nol (untuk melihat dunia secara keseluruhan) hingga 22 (untuk melihat jalan-jalan dan blok).
Tema peta
Anda bisa mendapatkan petak peta untuk tema peta berikut.
Tema peta | Deskripsi |
---|---|
Roadmap | Jalan, bangunan, lokasi menarik, dan perbatasan politik |
Satelit | Gambar fotografi yang diambil dari luar angkasa |
Medan | Peta kontur yang menunjukkan fitur alam seperti vegetasi |
Untuk meminta petak peta dari Map Tiles API, Anda harus terlebih dahulu meminta permintaan
token sesi. Token sesi
melacak status terkini peta dan area pandang Anda. Saat Anda menyiapkan sesi
Anda harus menetapkan nilai mapType
agar sesuai dengan tema peta yang diinginkan.
Kemudian, Anda harus menyertakan token sesi di setiap permintaan Anda untuk
Map Tiles API.
Permintaan informasi area pandang
Area pandang menentukan ukuran kotak yang membingkai pemandangan dunia. Area Pandang permintaan informasi menampilkan detail tentang petak peta yang membentuk area pandang saat ini. Alasan Anda meminta informasi area pandang adalah untuk memastikan agar Anda tidak meminta gambar pada tingkat zoom yang tidak ada.
Misalnya, kebanyakan kota memiliki citra pada tingkat zoom 22, tetapi tidak ada lautan sejak maka pada akhirnya Anda akan menampilkan kotak biru tanpa fitur.
Permintaan area pandang adalah permintaan GET HTTPS dalam bentuk berikut.
curl "https://tile.googleapis.com/tile/v1/viewport?session=YOUR_SESSION_TOKEN &key=YOUR_API_KEY &zoom=zoom &north=north &south=south &east=east &west=west"
Permintaan berisi kolom berikut:
zoom
- Tingkat zoom area tampilan.
north
,south
,east
,west
- Titik utara, selatan, timur, dan barat terjauh di area pandang, yang dinyatakan dalam derajat. Utara dan selatan harus dalam rentang (-90,90), timur dan barat harus dalam rentang rentang (-180, 180). Untuk mengekspresikan garis batas yang melintasi antimeridian, barat bisa di positif (misalnya, 170) dan timur bisa negatif (misalnya, -170). Semua parameter wajib diisi.
Respons informasi area pandang
Respons area pandang memberi tahu Anda area mana yang memiliki gambar, dan di mana zoom level organisasi. Respons informasi area pandang memiliki bentuk berikut.
{
"copyright": "Map data ©2023",
"maxZoomRects": [
{
"maxZoom": 19,
"north": 90,
"south": -90,
"east": 180,
"west": -180
},
{
"maxZoom": 9,
"north": 90,
"south": -90,
"east": 180,
"west": -180
},
{
"maxZoom": 14,
"north": 84.375,
"south": -84.375,
"east": 180,
"west": -180
}, ...
]
}
Isi respons berisi kolom berikut.
copyright
- Berisi string atribusi yang harus Anda tampilkan di peta saat Anda menampilkan peta jalan dan ubin satelit. Untuk informasi selengkapnya, lihat Kebijakan Map Tiles API.
maxZoomRect
- Berisi array persegi panjang pembatas yang tumpang tindih dengan arus area pandang. Juga berisi tingkat zoom maksimum yang tersedia dalam setiap persegi panjang.
Fungsi koordinat petak peta
Alat (fungsi sederhana) tersedia di sebagian besar bahasa pemrograman untuk mengonversi
mulai dari pasangan garis lintang/bujur hingga koordinat ubin pada tingkat zoom tertentu.
Perhatikan contoh kode JavaScript berikut yang pertama kali melakukan konversi dari
latLng
ke suatu titik, lalu dari satu titik ke koordinat ubin.
var TILE_SIZE = 256;
function fromLatLngToPoint(latLng) {
var mercator = -Math.log(Math.tan((0.25 + latLng.lat() / 360) * Math.PI));
return {
x: TILE_SIZE * (latLng.lng() / 360 + 0.5),
y: TILE_SIZE / 2 * (1 + mercator / Math.PI)
};
}
function fromLatLngToTileCoord(latLng, zoom) {
var point = fromLatLngToPoint(latLng);
var scale = Math.pow(2, zoom);
return {
x: Math.floor(point.x * scale / TILE_SIZE),
y: Math.floor(point.y * scale / TILE_SIZE),
z: zoom
};
}