Harita döşemeleri, dünyanın indekslenmiş bir ızgaraya bölünmesidir. Bu API, harita verilerine birden fazla kartografik ölçekte verimli ve dinamik bir şekilde erişmenizi ve bu verilerden yararlanmanızı sağlar. Map Tiles API, Google tarafından derlenenler de dahil olmak üzere birden fazla tematik coğrafi veri kümesine erişmenizi sağlar:
Google'ın kartografik stiline sahip, vektörel topografik verilere dayalı yol haritası resim döşemeleri.
Hem uydu hem de havadan çekilen kameralarla elde edilen, dünyanın yukarıdan (nadir) görüntülerini sağlayan ortofotoğraflar.
Eğimli arazi kontur haritaları.
2D harita döşemelerinin tümü coğrafi olarak referanslandırılmıştır ve birbirleriyle hizalanmıştır. Görüntü alanının coğrafi kapsamına ve yakınlaştırma düzeyine göre seçilir. Yakınlaştırma düzeyleri, sıfır (dünyanın tamamını görüntülemek için) ile 22 (sokakları ve blokları görüntülemek için) arasında değişir.
Harita temaları
Aşağıdaki harita temaları için harita döşemeleri alabilirsiniz.
Harita teması | Açıklama |
---|---|
Yol haritası | Yollar, binalar, ilgi çekici yerler ve siyasi sınırlar |
Uydu | Uzaydan çekilmiş fotoğraf görüntüleri |
Arazi | Bitki örtüsü gibi doğal özellikleri gösteren bir kontur haritası |
Map Tiles API'den harita döşemeleri istemek için önce oturum jetonu istemeniz gerekir. Oturum jetonu, haritanızın ve görünüm alanınızın mevcut durumunu izler. Oturum jetonunuzu ayarlarken mapType
değerini istediğiniz harita temasıyla eşleşecek şekilde ayarlamanız gerekir.
Ardından, Harita Döşemeleri API'sine yaptığınız her isteğe oturum jetonunu eklemeniz gerekir.
Görüntü alanı bilgi istekleri
Görüntü alanı, dünya sahnesini çerçeveleyen kutunun boyutunu tanımlar. Görüntü alanı bilgi istekleri, mevcut görüntü alanınızı oluşturan harita döşemeleriyle ilgili ayrıntıları döndürür. Görünüm alanı bilgilerini istemenizin nedeni, mevcut olmayan yakınlaştırma düzeylerinde görüntü istemekten kaçınmaktır.
Örneğin, çoğu şehirde 22. yakınlaştırma düzeyinde görüntüler bulunur ancak okyanuslarda bulunmaz. Çünkü okyanuslar, yalnızca özellik içermeyen mavi kareler olarak gösterilir.
Görüntü alanı isteği, aşağıdaki biçimde bir HTTPS GET isteğidir.
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"
İstek aşağıdaki alanları içerir:
zoom
- Görüntü alanının yakınlaştırma düzeyi.
north
,south
,east
,west
- Görüntü alanındaki en kuzey, güney, doğu ve batı noktaları derece cinsinden ifade edilir. Kuzey ve güney (-90,90) aralığında, doğu ve batı ise (-180, 180) aralığında olmalıdır. Antimeridyeni geçen sınırları ifade etmek için batı pozitif (örneğin, 170), doğu ise negatif (örneğin, -170) olabilir. Tüm parametreler gereklidir.
Görüntü alanı bilgisi yanıtları
Görüntü alanı yanıtı, hangi alanlarda görüntü olduğunu ve hangi yakınlaştırma düzeylerinde olduğunu gösterir. Görüntü alanı bilgisi yanıtı aşağıdaki biçimdedir.
{
"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
}, ...
]
}
Yanıt gövdesinde aşağıdaki alanlar bulunur.
copyright
- Yol haritası ve uydu döşemelerini gösterdiğinizde haritanızda göstermeniz gereken bir ilişkilendirme dizesi içerir. Daha fazla bilgi için Map Tiles API Politikaları'na bakın.
maxZoomRect
- Geçerli görünüm penceresiyle çakışan sınırlayıcı dikdörtgenler dizisini içerir. Ayrıca, her dikdörtgen içinde kullanılabilen maksimum yakınlaştırma düzeyini de içerir.
Parça koordinatı işlevleri
Enlem/boylam çiftlerini belirli bir yakınlaştırma düzeyinde karo koordinatlarına dönüştürmek için çoğu programlama dilinde araçlar (basit işlevler) mevcuttur.
Önce latLng
işaretinden noktaya, ardından noktadan karo koordinatlarına dönüştüren aşağıdaki JavaScript kodu örneğini inceleyin.
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
};
}