Maps JavaScript API'de aşağıdaki koordinat sistemleri kullanılır:
- Dünyadaki bir noktaya benzersiz şekilde referans veren enlem ve boylam değerleri. (Google, World Geodetic System WGS84 standardını kullanır.)
- Haritadaki bir noktaya benzersiz şekilde referans veren dünya koordinatları.
- Haritadaki belirli bir piksele belirli bir yakınlaştırma düzeyinde başvuruda bulunan piksel koordinatları.
- Haritadaki belirli bir bloka belirli bir yakınlaştırma düzeyinde referans veren karo koordinatları.
Dünya koordinatları
API'nin dünyadaki bir konumu haritada bir konuma çevirmesi gerektiğinde, enlem ve boylam değerlerini önce bir dünya koordinatına çevirir. API, bu çeviriyi gerçekleştirmek için Mercator projeksiyonunu kullanır.
Piksel koordinatlarını hesaplamada kolaylık olması açısından (aşağıya bakın) yakınlaştırma düzeyi 0'daki bir haritanın temel karo boyutunda tek bir karo olduğunu varsayarız. Ardından, enlem ve boylamları bu temel karodaki piksel konumlarına dönüştürmek için projeksiyonu kullanarak yakınlaştırma düzeyi 0'da piksel koordinatlarına göre dünya koordinatlarını tanımlarız. Bu dünya koordinatı, harita projeksiyonunun kaynağından belirli bir konuma kadar ölçülen kayan bir nokta değeridir. Bu değer bir kayan nokta değeri olduğundan, gösterilen harita resminin mevcut çözünürlüğünden çok daha kesin olabilir. Dünya koordinatı, mevcut yakınlaştırma düzeyinden bağımsızdır.
Google Haritalar'daki dünya koordinatları, Mercator projeksiyonunun başlangıç noktasından (haritanın kuzeybatısındaki 180 boylam ve yaklaşık 85 derece enlemden) ölçülür ve doğuya (sağda) doğru x
yönünde, güneyde (aşağı) y
yönde artar. Mercator Google Haritalar'ın temel kutusu 256 x 256 piksel olduğundan, kullanılabilir dünya koordinatı alanı {0-256}, {0-256}
'tir.
Bir Merkatör projeksiyonunun uzunluksal olarak sonsuz bir genişliğine, ilişkisel olarak sonsuz bir yüksekliğe sahip olduğunu unutmayın. Sonuç olarak harita şeklinin kare şeklinde olması için yaklaşık olarak +/- 85 derecede Mercator projeksiyonunu kullanan temel harita görüntüleri kesin. Bu sayede, karo seçimi için daha kolay bir mantık oluşturulur. Bir projeksiyon, örneğin kutupların çok yakınına çizerseniz temel haritanın kullanılabilir koordinat alanı dışında da dünya koordinatları oluşturabilir.
Pixel koordinatları
Pixel koordinatları, haritadaki belirli bir piksele belirli bir yakınlaştırma düzeyinde referans verirken dünya koordinatları, belirli bir projeksiyondaki mutlak konumları yansıtır. Piksel koordinatları, aşağıdaki formül kullanılarak hesaplanır:
pixelCoordinate = worldCoordinate * 2zoomLevel
Yukarıdaki denkleme göre, artan her yakınlaştırma düzeyi hem x
hem de y
yönlerinde iki kat daha büyüktür. Bu nedenle, daha yüksek olan her yakınlaştırma düzeyi, önceki düzeyin dört katı üzerinde bir çözünürlüğe neden olur. Örneğin, yakınlaştırma düzeyi 1'de harita 4 256x256 piksellik parçalardan oluşur ve 512x512 piksellik bir alan sağlar. Yakınlaştırma düzeyi 19'da, haritadaki her x
ve y
pikseline 0 ile 256 * 219 arasındaki bir değer kullanılarak başvurulabilir.
Dünya koordinatlarını haritanın karo boyutuna dayandırdığımız için bir piksel koordinatının tam sayı bölümünün, geçerli yakınlaştırma düzeyinde ilgili konumdaki tam pikseli tanımlama etkisi olur. Yakınlaştırma düzeyi 0 için piksel koordinatlarının dünya koordinatlarına eşit olduğunu unutmayın.
Artık her bir konumu, her bir yakınlaştırma düzeyinde doğru bir şekilde göstermenin bir yolu var. Maps JavaScript API, haritanın yakınlaştırma düzeyi merkezine (LatLng
olarak) ve içerdiği DOM öğesinin boyutuna göre bir görüntü alanı oluşturur ve bu sınırlayıcı kutuyu piksel koordinatlarına dönüştürür. Daha sonra API, belirli piksel sınırlarının içinde yer alan tüm harita parçalarını mantıksal olarak belirler. Bu harita bloklarının her birine, harita görüntülerinin gösterilmesini büyük ölçüde basitleştiren karo koordinatları kullanılarak atıfta bulunulur.
Parça koordinatları
API, daha yüksek yakınlaştırma seviyeleri için tüm harita görüntülerini aynı anda yükleyemez. Bunun yerine API, her bir yakınlaştırma düzeyindeki görüntüleri, uygulamanın anlayacağı bir sırada mantıksal olarak ayarlanan bir harita bloklarına ayırır. Bir harita yeni bir konuma veya yeni bir yakınlaştırma seviyesine gittiğinde API, piksel koordinatlarını kullanarak hangi blokların gerekli olduğunu belirler ve bu değerleri almak için bir karo grubuna dönüştürür. Bu karo koordinatları, herhangi bir noktanın görüntülerini içeren karoyu mantıksal olarak kolaylaştıran bir şema kullanılarak atanır.
Google Haritalar'daki kutular, piksellerle aynı kaynaktan numaralandırılır. Google'ın Mercator projeksiyonu için kaynak bloku her zaman haritanın kuzeybatı köşesinde yer alır. x
değeri batıdan doğuya ve y
değerleri kuzeyden güneye artar. Kartlar,
o kaynaktan gelen x,y
koordinatları kullanılarak dizine eklenir. Örneğin, 2. yakınlaştırma düzeyinde, dünya 16 karoya bölündüğünde her bir parçaya benzersiz bir x,y
çifti tarafından referans verilebilir:
Piksel koordinatlarını karo boyutuna (256) böler ve sonucun tam sayı kısımlarını alarak mevcut yakınlaştırma düzeyinde ürün koordinatı üretirsiniz.
Örnek
Aşağıdaki örnekte Chicago, IL için koordinatlar gösterilmektedir: enlem/boylam değerleri, dünya koordinatları, piksel koordinatları ve karo koordinatları. Koordinat değerlerini çeşitli yakınlaştırma düzeylerinde görmek için yakınlaştırma denetimini kullanın.
Koordinatların nasıl hesaplandığını görmek için kodu görüntüleyin.