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ı.
- Belirli bir yakınlaştırma düzeyinde haritada belirli bir piksele atıfta bulunan piksel koordinatları.
- Haritadaki belirli bir öğeye belirli bir yakınlaştırma düzeyinde başvuruda bulunan karo koordinatları.
Dünya koordinatları
API'nin dünyadaki bir konumu haritada bir konuma çevirmesi gerektiğinde, ilk olarak enlem ve boylam değerlerini dünya koordinatına çevirir. API, bu dönüşümü gerçekleştirmek 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. Ardından, enlem ve boylamları bu temel karodaki piksel konumlarına dönüştürmek için projeksiyonu kullanarak dünya koordinatlarını 0 yakınlaştırma düzeyindeki piksel koordinatlarına göre tanımlarız. Bu dünya koordinatı, harita projeksiyonunun orijininden belirli konuma kadar ölçülen kayan bir nokta değeridir. Bu değerin kayan nokta değeri olduğundan, gösterilen harita resminin mevcut çözünürlüğünden çok daha hassas olabileceğini unutmayın. Dünya koordinatı, diğer bir deyişle dünya üzerinde bir noktanın koordinatı, mevcut yakınlaştırma düzeyinden bağımsızdır.
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 artış gösterir. Temel Mercator Google Haritalar karosu 256 x 256 piksel olduğundan, kullanılabilir dünya koordinatı alanı {0-256}, {0-256}
'tür.
Mercator projeksiyonunun boylamsal olarak sonlu, enlemsel olarak ise sonsuz yüksekliğe sahip olduğunu unutmayın. Elde edilen harita şeklini kare yapmak için Mercator projeksiyonunu kullanarak temel harita görüntülerini yaklaşık +/- 85 derecelik bir açıda kesiyoruz. Bu, karo seçimi için daha kolay bir mantık sağlar. Örneğin, kutuplara çok yakın bir yerde nokta işareti bırakırsanız projeksiyonun, ana haritanın kullanılabilir koordinat alanı dışında dünya koordinatları oluşturabileceğini unutmayın.
Piksel koordinatları
Piksel koordinatları, belirli bir yakınlaştırma düzeyinde haritada belirli bir pikseli referans alır. 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 denklemde, her bir artan 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, 1. yakınlaştırma düzeyinde harita 4 adet 256x256 piksel karodan oluşur. Bu da 512x512 piksellik bir piksel alanı oluşturur. 19. yakınlaştırma seviyesinde, haritadaki her x
ve y
pikseli 0 ile 256 * 219 arasında bir değer kullanılarak referans verilebilir.
Dünya koordinatlarını haritanın karo boyutuna göre belirlediğimiz için piksel koordinatının tam sayı kısmı, mevcut yakınlaştırma düzeyinde söz konusu konumdaki tam pikseli tanımlar. 0 yakınlaştırma düzeyinde 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. Haritalar JavaScript API'si, haritanın yakınlaştırma düzeyi merkezini (LatLng
olarak) ve kapsayıcı DOM öğesinin boyutunu temel alarak bir görüntü alanı oluşturur ve bu sınırlayıcı kutuyu piksel koordinatlarına dönüştürür. Ardından API, belirli piksel sınırları içinde kalan tüm harita karoları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 anlayabileceği bir sırada mantıksal olarak düzenlenmiş bir dizi harita kartı olarak böler. Bir harita yeni bir konuma veya yeni bir yakınlaştırma düzeyine kaydırılırken API, piksel koordinatlarını kullanarak hangi karolara ihtiyaç duyulduğunu belirler ve bu değerleri, alınacak bir karo grubuna dönüştürür. Bu karo koordinatları, belirli bir noktanın görüntülerini hangi karonun içerdiğini mantıksal olarak kolayca belirlemeyi sağlayan bir şema kullanılarak atanır.
Google Haritalar'daki karolar, piksellerle aynı kaynaktan numaralandırılır. Google'ın Mercator projeksiyonu uygulamasında, başlangıç karosu her zaman haritanın kuzeybatı köşesindedir. x
değerleri batıdan doğuya, y
değerleri ise kuzeyden güneye doğru artar. Karolar, söz konusu kaynaktan 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 karoya benzersiz bir x,y
çifti ile 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, Illinois, Chicago 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.