Harita bölümleri, dünyanın dizine eklenmiş bir ızgaraya bölünmesiyle elde edilir. Bu API, harita verilerine birden fazla kartografik ölçekte verimli ve dinamik bir şekilde erişmenize ve bunları kullanmanıza olanak tanır. Map Tiles API, Google tarafından seçilen aşağıdakiler de dahil olmak üzere birden fazla tematik coğrafi veri kümesine erişmenizi sağlar:
Google'ın haritacılık stiliyle vektör topoğrafik verilerini temel alan yol haritası resim blokları.
Hem uydu hem de hava kameralarıyla yakalanan ve yeryüzünün kuş bakışı (nadir) görüntüleriyle çekilen ortofotoğrafçılık.
Tepe gölgeleri kontur haritaları.
2D harita parçalarının tümü coğrafi başvurulara sahip ve birbirleri ile hizalanıyor. Bunlar, görünümün coğrafi kapsamına ve yakınlaştırma düzeyine göre seçilir. Yakınlaştırma seviyeleri sıfırdan (dünyayı bütünüyle görmek için) ile 22 (sokakları ve blokları görüntülemek için) arasında değişir.
Harita temaları
Aşağıda belirtilen harita temalarına uygun harita desenleri alabilirsiniz.
Harita teması | Açıklama |
---|---|
Yol haritası | Yollar, binalar, önemli yerler ve siyasi sınırlar |
Uydu | Uzaydan çekilen fotoğraf görüntüleri |
Arazi | Bitki örtüsü gibi doğal özellikleri gösteren bir kontur haritası |
Map Tiles API'den harita desenleri istemek için bir
oturum jetonu istemeniz gerekir. Oturum jetonu, haritanızın ve görüntü alanınızın mevcut durumunu izler. Oturum jetonunuzu oluştururken, istediğiniz harita temasıyla eşleşmesi için mapType
değerini ayarlamanız gerekir.
Ardından, Map Tiles API'ye yaptığınız isteklerin her birine oturum jetonunu eklemeniz gerekir.
Görüntü alanı bilgisi istekleri
Görüntü alanı, dünya sahnesini çerçeveleyen kutunun boyutunu tanımlar. Görünüm bilgisi istekleri, geçerli görüntü alanınızı oluşturan harita bölümleri hakkında ayrıntılı bilgi döndürür. Görüntü alanı bilgilerini istemenizin nedeni, var olmayan yakınlaştırma düzeylerinde görüntü istemekten kaçınmanızı sağlamaktır.
Örneğin, çoğu şehirde zum düzeyi 22'de olan görüntüler vardır, ancak sonuçta özelliksiz mavi kareler gösterileceği için okyanus için böyle bir durum söz konusu değildir.
Görüntü alanı isteği, aşağıdaki biçimdeki 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ının en uzak kuzey, güney, doğu ve batı noktaları (derece cinsinden belirtilir). Kuzey ve güney (-90,90), doğu ve batı ise (-180, 180) aralığında olmalıdır. Antimeridyeyi aşan sınırları ifade etmek için batı pozitif (ör. 170) ve doğu negatif (ör. -170) olabilir. Tüm parametreler gereklidir.
Görüntü alanı bilgisi yanıtları
Görüntü alanı yanıtı, hangi bölgelerde ve hangi yakınlaştırma seviyelerinde görüntülerin bulunduğunu size bildirir. Görünüm bilgileri 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övdesi aşağıdaki alanları içerir.
copyright
- Yol haritasını ve uydu görüntülerini gösterdiğinizde haritanızda göstermeniz gereken bir atıf dizesi içerir. Daha fazla bilgi için Map Tiles API Politikaları'na bakın.
maxZoomRect
- Mevcut görüntü alanıyla çakışan bir sınırlayıcı dikdörtgenler dizisi içerir. Ayrıca, her dikdörtgen içinde kullanılabilecek maksimum yakınlaştırma düzeyini de içerir.
Parça koordinatı fonksiyonları
Çoğu programlama dilinde, enlem/boylam çiftlerinden belirli bir yakınlaştırma düzeyindeki parça koordinatlarına dönüştürmenizi sağlayan araçlar (basit işlevler) mevcuttur.
Önce bir latLng
noktasından bir noktaya ve daha sonra bir noktadan parça koordinatlarına dönüştüren aşağıdaki JavaScript kodu örneğini düşünün.
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
};
}