Maps JavaScript API aşağıdaki koordinat sistemlerini kullanır:
- Dünyanın herhangi bir noktasına benzersiz şekilde atıfta bulunan enlem ve boylam değerleri. (Google, World Geodetic System WGS84 standardını kullanır.)
- Haritadaki bir noktaya benzersiz bir şekilde atıfta bulunan dünya koordinatları.
- Haritada belirli bir piksel düzeyinde belirli bir piksele referans veren 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 haritadaki bir konuma çevirmesi gerektiğinde, enlem ve boylam değerlerini önce dünya koordinatına çevirir. API, bu çeviriyi 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'deki bir haritanın temel karo boyutunda tek bir karo olduğunu varsayarız. Ardından, bu temel karoda enlem ve boylamları piksel konumlarına dönüştürmek için projeksiyonu kullanarak, yakınlaştırma düzeyi 0 olarak 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ı, Merkatör projeksiyonu
başlangıç noktasından (haritanın kuzeybatı köşesi 180 derece boylam ve yaklaşık 85 derece enlem) ölçülür ve doğuya (sağa) doğru
x yönünde, güney yönünde (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}'dir.
Bir Mercator projeksiyonunun, dikey olarak sonsuz bir uzunluğa sahip olmasına rağmen neden olarak yüksekliğinin sonsuz olduğunu unutmayın. Sonuçta ortaya çıkan harita şekli karesini oluşturmak için Mercator projeksiyonunu kullanarak temel harita görüntülerinden yaklaşık olarak +/- 85 derece çıkardık. Bu sayede, karo seçimi için daha kolay bir mantık oluşturduk. Projeksiyon, örneğin, kutupların çok yakınına çizerseniz temel haritanın dışında dünya koordinatlarını kullanabilir.
Piksel koordinatları
Piksel koordinatları haritadaki belirli bir piksele belirli bir yakınlaştırma düzeyinde başvuruda bulunurken 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üzeyi hem
x hem de
y yönlerinde iki kat daha büyüktür. Bu nedenle, daha yüksek yakınlaştırma seviyelerinin her biri bir öncekinden dört kat daha yüksek çözünürlükle sonuçlanır. Örneğin, yakınlaştırma düzeyinde 1, harita 4 adet 256x256 piksellik döşemelerden oluşur ve böylece 512x512 piksellik bir alan oluşur. 19. yakınlaştırma düzeyinde, haritadaki her bir
x ve
y pikseline 0 ile 256 * 2 19 arasındaki bir değer kullanılarak referans verilebilir.
Dünya koordinatlarını haritanın karo boyutuna dayandığından, piksel koordinatının tam sayı kısmı, geçerli yakınlaştırma düzeyinde ilgili konumdaki tam pikselin tanımlanmasına neden olur. Yakınlaştırma düzeyinin 0 için piksel koordinatlarının dünya koordinatlarına eşit olduğunu unutmayın.
Artık haritada her konumu her yakınlaştırma düzeyinde doğru şekilde göstermek için bir yöntemimiz 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 çevirir. API, daha sonra belirtilen piksel sınırları içinde yer alan tüm harita blokları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 fayans koordinatları kullanılarak başvurulur.
Karo koordinatları
Daha yüksek yakınlaştırma düzeyleri için API 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 anlayabileceği bir sırada gösterilecek şekilde, kutucuklar halinde gruplara ayırır. Bir harita yeni bir konuma veya yeni bir yakınlaştırma düzeyine gittiğinde API, piksel koordinatlarını kullanarak hangi blokların gerekli olduğunu belirler ve bu değerleri alınacak bir dizi karoya çevirir. Bu karo koordinatları, belirli bir nokta için hangi karoların görüntülerinin bulunduğunun mantıksal olarak belirlenmesini kolaylaştıran bir şema kullanılarak atanır.
Google Haritalar'daki karolar, piksellerle aynı kaynaktan numaralandırılır. Google Mercator projeksiyonu için kaynak kutusu her zaman haritanın kuzeybatı köşesindedir; batıdan doğuya
x değerleri ve kuzeyden güneye uzanan
y değerleri vardır. Kartlar, bu kaynaktan alınan
x,y koordinatları kullanılarak dizine eklenir. Örneğin, yakınlaştırma düzeyi 2'de, dünya 16 karoya bölündüğünde her bir parçaya benzersiz bir
x,y çifti tarafından başvurulabilir:
Piksel koordinatlarını karo boyutuna (256) böldüğünüzde ve sonucun tam sayıda bölümünü aldığınızda, geçerli yakınlaştırma düzeyinde karo koordinatını ürün bazında ü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.