Maps JavaScript API aşağıdaki koordinat sistemlerini kullanır:
- Dünyadaki bir noktayı benzersiz şekilde belirten enlem ve boylam değerleri. (Google, Dünya Geodezik Sistemi 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ı.
- Belirli bir yakınlaştırma düzeyinde haritada belirli bir karoya atıfta 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) 0 yakınlaştırma düzeyindeki bir haritanın, temel karo boyutunda tek bir karo 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 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 180 derece boylam ve yaklaşık 85 derece enlemdeki kuzeybatı köşesi) ölçülür ve x
yönünde doğuya (sağ) doğru, y
yönünde ise güneye (aşağı) doğru artar. 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. Sonuçta ortaya çıkan 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. Bu nedenle, her bir daha yüksek yakınlaştırma seviyesi, önceki seviyeye kıyasla dört kat daha yüksek bir çözünürlük sağlar. Ö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 her bir konumu haritada her yakınlaştırma düzeyinde doğru şekilde belirtebiliyoruz. 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 karolarının her birine, harita görüntülerinin gösterilmesini büyük ölçüde basitleştiren
karo koordinatları kullanılarak referans verilir.
Parça koordinatları
API, daha yüksek yakınlaştırma seviyeleri için tüm harita görüntülerini tek seferde 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. Kartlar, bu kaynaktaki 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ı kısımlarını alarak yan ürün olarak mevcut yakınlaştırma düzeyindeki karo koordinatını oluşturduğunuzu unutmayın.
Örnek
Aşağıdaki örnekte, Illinois, Chicago'nun koordinatları gösterilmektedir: enlem/boylam değerleri, dünya koordinatları, piksel koordinatları ve karo koordinatları. Koordinat değerlerini çeşitli yakınlaştırma seviyelerinde 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.