2D Kartlara genel bakış

Yol haritası örneğiHarita karoları, dünyanın dizine eklenen bir ızgaraya bölünmesidir. Harita verilerine birden fazla kartografik ölçekte verimli ve dinamik bir şekilde erişmenize ve bu verileri kullanmanız Harita Karoları API, Google tarafından seçilenler de dahil olmak üzere birden fazla tematik coğrafi veri kümesine erişim sağlar:

  • Google'ın kartografik stiliyle vektör topoğrafik verilere dayalı yol haritası resim karoları.

  • Dünyanın yukarıdan (nadir) görüntülerini sağlayan, hem uydu hem de havadan kameralar tarafından çekilen ortofotoğraflar.

  • Gölgelendirme eş yükselti haritaları.

2D harita karolarının tümü coğrafi referanslıdır ve birbirine hizalanmıştır. Bunlar, 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 seviyeleri sıfır (dünyayı tümüyle 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 karoları alabilirsiniz.

Harita teması Açıklama
Yol haritası Yollar, binalar, önemli yerler ve siyasi sınırlar
Uydu Uzaydan çekilmiş fotoğrafik görüntüler
Arazi Bitki örtüsü gibi doğal özellikleri gösteren bir eş yükselti çizgisi haritası

Map Tiles API'den harita karoları istemek için önce bir oturum jetonu istemeniz gerekir. Oturum jetonu, haritanızın ve görüntü alanını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 Karoları API'sine gönderdiğiniz 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ünüm alanı bilgi istekleri, mevcut görünüm alanınızı oluşturan harita karolarıyla ilgili ayrıntıları 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ızdır.

Örneğin, çoğu şehirde 22. yakınlaştırma düzeyinde görüntüler bulunur ancak okyanus için bu düzeyde görüntüler yoktur. Çünkü okyanus görüntüsünde yalnızca özelliksiz mavi kareler gösterilir.

Görünüm 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, en güney, en doğu ve en batı noktaları (derece cinsinden). Kuzey ve güney (-90,90) aralığında, doğu ve batı (-180, 180) aralığında olmalıdır. Antimeridyeni 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ı bilgileri 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ı 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 metni aşağıdaki alanları içerir.

copyright
Kroki ve uydu karolarını görüntülerken haritanızda göstermeniz gereken bir ilişkilendirme dizesi içerir. Daha fazla bilgi için Map Tiles API Politikaları'na bakın.
maxZoomRect
Mevcut görüntü alanı ile örtüşen bir dizi sınırlayıcı dikdörtgen içerir. Ayrıca her dikdörtgende kullanılabilen maksimum yakınlaştırma düzeyini de içerir.

Parça koordinatı işlevleri

Çoğu programlama dilinde, belirli bir yakınlaştırma düzeyinde enlem/boylam çiftlerini karo koordinatlarına dönüştürmek için araçlar (basit işlevler) bulunur. Önce latLng'ten 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
  };
}