Maps JavaScript API aşağıdaki koordinat sistemlerini kullanır:
- Dünya üzerinde bir noktaya benzersiz şekilde referans veren enlem ve boylam değerleridir. (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 referans veren piksel koordinatları.
- Haritadaki belirli bir öğeye belirli bir yakınlaştırma düzeyinde referans veren karo koordinatları.
Dünya koordinatları
API'nin dünyadaki bir konumu harita üzerindeki bir konuma çevirmesi gerektiğinde, öncelikle enlem ve boylam değerlerini dünya koordinatına çevirir. API, bu çeviriyi yapmak için Mercator projeksiyonunu kullanır.
Piksel koordinatlarının hesaplanmasında kolaylık sağlamak için (aşağıya bakın) yakınlaştırma düzeyi 0'daki bir haritanın, taban karo boyutundan tek bir parça olduğunu varsayıyoruz. Daha sonra, enlem ve boylamları bu temel parça üzerindeki piksel konumlarına dönüştürmek için projeksiyonu kullanarak yakınlaştırma seviyesi 0'da piksel koordinatlarına göre dünya koordinatlarını tanımlarız. Bu dünya koordinatı, harita projeksiyonunun başlangıcından belirli bir konuma kadar ölçülen, kayan bir nokta değeridir. Bu değer 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. Başka bir deyişle,
Google Haritalar'daki dünya koordinatları, Mercator projeksiyonunun başlangıcından (haritanın 180 derece boylam ve yaklaşık 85 derece enlemde kuzeybatı köşesinde) ölçülür ve doğuya (sağa) x
yönünde, güneye (aşağıya) doğru y
yönünde artar. Temel Mercator Google Haritalar bloğu 256 x 256 piksel olduğundan kullanılabilir dünya koordinat alanı {0-256}, {0-256}
şeklindedir.
Merkatör projeksiyonunun boylam olarak sonlu bir genişliğe, ancak enlemde sonsuz bir yüksekliğe sahip olduğunu unutmayın. Ortaya çıkan harita şeklini kare haline getirmek için Merkatör projeksiyonunu kullanarak yaklaşık +/- 85 derecelik temel harita görüntülerini kestik. Böylece karo seçiminde daha kolay bir mantık gerçekleştiriyoruz. Örneğin, kutuplara çok yakın bir harita çiziyorsanız, bir projeksiyonun temel haritanın kullanılabilir koordinat alanının dışında dünya koordinatları üretebileceğini unutmayın.
Piksel koordinatları
Piksel koordinatları, haritadaki belirli bir piksele belirli bir yakınlaştırma düzeyinde referans verirken dünya koordinatları ise 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üzeyinin hem x
hem de y
yönünde iki kat daha büyük olduğunu unutmayın. Dolayısıyla, her yüksek yakınlaştırma seviyesi, önceki düzeyden dört kat daha yüksek bir çözünürlükle sonuçlanır. Örneğin, yakınlaştırma düzeyi 1'de, harita 256x256 piksel boyutunda 4 parçadan oluşur. Bu sayede, 512x512 boyutunda bir piksel alanı elde edilir. Yakınlaştırma seviyesi 19 olduğunda, haritadaki her bir x
ve y
pikseline 0 ile 256 x 219 arasında bir değer kullanılarak referans verilebilir.
Dünya koordinatlarını haritanın karo boyutuna dayandırdığımız için piksel koordinatının tam sayı bölümü, geçerli yakınlaştırma düzeyinde ilgili konumdaki tam pikseli tanımlama etkisine sahiptir. 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 haritadaki her bir konumu her yakınlaştırma düzeyinde
doğru şekilde gösterebileceğimiz bir yöntem var. Maps JavaScript API, haritanın yakınlaştırma seviyesi merkezi (LatLng
olarak) ve bunu içeren DOM öğesinin boyutunu dikkate alarak bir görünüm oluşturur ve bu sınırlayıcı kutuyu piksel koordinatlarına çevirir. Daha sonra API, belirtilen piksel sınırları içinde yer alan tüm harita bloklarını mantıksal olarak belirler. Bu harita parçalarının her birine,
karo koordinatları kullanılarak referans verilir. Bu, harita görüntülerinin görüntülenmesini büyük ölçüde basitleştirir.
Parça koordinatları
API, daha yüksek yakınlaştırma düzeyleri için tüm harita görüntülerini aynı anda yükleyemez. Bunun yerine API, her yakınlaştırma düzeyindeki görüntüleri, uygulamanın anlayacağı bir sırayla mantıksal olarak düzenlenen bir dizi harita parçasına böler. Harita yeni bir konuma veya yeni bir yakınlaştırma seviyesine geçtiğinde API, piksel koordinatlarını kullanarak hangi karoların gerekli olduğunu belirler ve bu değerleri, alınacakları bir dizi karoya dönüştürür. Bu karo koordinatları, bir şema kullanılarak atanır. Bu şema, herhangi bir noktanın görüntülerini içeren karonun belirlenmesini mantıksal olarak kolaylaştırır.
Google Haritalar'daki karolar, piksellerle aynı başlangıç noktasından numaralandırılır. Google'ın Merkatör projeksiyonunu uygularken kaynak kutucuğu her zaman haritanın kuzeybatı köşesinde yer alır. x
değerleri batıdan doğuya doğru artarken y
değerleri kuzeyden güneye doğru artar. Karolar, söz konusu noktadan x,y
koordinatları kullanılarak dizine eklenir. Örneğin, 2. yakınlaştırma düzeyinde, dünya 16 parçaya bölündüğünde her öğeye benzersiz bir x,y
çiftiyle referans verilebilir:
Piksel koordinatlarını karo boyutuna (256) bölerek ve sonucun tam sayı parçalarını alarak, geçerli yakınlaştırma düzeyinde karo koordinatını yan ürün olarak ürettiğinizi unutmayın.
Örnek
Aşağıdaki örnekte Chicago, Illinois'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.