Harita ve Fayans Koordinatları

Platform seçin: Android iOS JavaScript

Android için Haritalar SDK'sı aşağıdaki koordinat sistemlerini kullanır:

  • Dünya üzerinde bir noktaya benzersiz referansta bulunan enlem ve boylam değerleri. (Google, Dünya Jeodetik Sistemi WGS84 standardını kullanır.)
  • Haritadaki bir noktaya benzersiz referans veren dünya koordinatları.
  • Haritadaki belirli bir piksele belirli bir yakınlaştırma düzeyinde referans veren piksel koordinatları.
  • Haritadaki belirli bir karoya 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 API, öncelikle enlem ve boylam değerlerini dünya koordinatına dönüştürür. API bu çeviriyi gerçekleştirmek için Mercator projeksiyonu kullanır.

Piksel koordinatlarının hesaplanmasında kolaylık sağlaması için (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. Daha sonra, enlem ve boylamları bu temel parçadaki piksel konumlarına dönüştürmek için projeksiyonu kullanarak, yakınlaştırma düzeyi 0'daki piksel koordinatlarına göre dünya koordinatlarını belirleriz. Bu dünya koordinatı, harita projeksiyonunun başlangıcından belirli bir konuma ölçülen bir kayan nokta değeridir. Bu değer, kayan nokta değeri olduğundan, gösterilen harita resminin mevcut çözünürlüğünden çok daha doğru 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 kuzeybatı köşesinden (180 derece boylam ve yaklaşık 85 derece enlemde) ölçülür ve x yönünde doğuya (sağ) doğru artar, güneye doğru ise y yönünde artış (aşağı) yapılır. Temel Mercator Google Haritalar karesi 256 x 256 piksel olduğundan kullanılabilir dünya koordinat alanı {0-256}, {0-256} şeklindedir.

Bir Merkatör projeksiyonunun boylamsal olarak sınırlı genişliğe ve enlemsel olarak sonsuz yüksekliğe sahip olduğunu unutmayın. Ortaya çıkan harita şeklini kare yapmak için Merkatör projeksiyonunu kullanarak temel harita görüntülerini yaklaşık +/- 85 derecede kestik. Böylece karo seçiminde mantığı daha kolay hale getirdik. Örneğin, kutupların çok yakınına çizerseniz, bir projeksiyonun, temel haritanın kullanılabilir koordinat alanının dışında dünya koordinatları oluşturabileceğini unutmayın.

Piksel koordinatları

Piksel 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üzeyinin hem x hem de y yönünde iki kat daha büyük olduğuna dikkat edin. Bu nedenle, her yüksek yakınlaştırma düzeyi bir önceki seviyeye kıyasla dört kat daha yüksek bir çözünürlükle sonuçlanır. Örneğin, yakınlaştırma düzeyi 1 olduğunda, harita 256x256 piksellik 4 parçadan oluşur. Bu da, 512x512 boyutunda bir piksel alanı elde edilmesini sağlar. Yakınlaştırma düzeyi 19 olduğunda, haritadaki her bir x ve y pikseline 0 ile 256 * 219 arasında bir değer kullanılarak referans verilebilir.

Dünya koordinatlarını haritanın parça boyutuna göre belirlediğimizden, bir piksel koordinatının tam sayı kısmı, mevcut yakınlaştırma düzeyinde o 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 konumu her yakınlaştırma düzeyinde doğru bir şekilde belirtmek için bir yöntemimiz var. Android için Haritalar SDK'sı, haritanın yakınlaştırma düzeyi merkezine (LatLng olarak) ve kapsayıcı 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, belirtilen piksel sınırları içinde yer alan tüm harita parçalarını mantıksal olarak belirler. Bu harita parçalarının her birine, harita görüntülerinin görüntülenmesini büyük ölçüde basitleştiren parça 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 aynı anda yükleyemez. Bunun yerine API, her yakınlaştırma düzeyindeki görüntüleri, uygulamanın anlayacağı bir sıraya göre mantıksal olarak düzenlenmiş bir dizi harita parçasına ayırır. Bir harita sayfayı yeni bir konuma veya yeni bir yakınlaştırma düzeyine kaydırdığında, API, piksel koordinatlarını kullanarak hangi karoların gerektiğini 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 karoların belirlenmesini mantıksal olarak kolaylaştıran bir şema kullanılarak atanır.

Google Haritalar'daki karolar, pikseller için olanla aynı kaynaktan numaralandırılır. Google'ın Mercator projeksiyonunu uygulaması için başlangıç noktası karosu her zaman haritanın kuzeybatı köşesindedir. x değerleri batıdan doğuya doğru artarken y değerleri kuzeyden güneye doğru artar. Karolar, ilgili 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 çiftiyle referans verilebilir:

Dört satır ve dört sütuna bölünmüş dünya haritası.

Piksel koordinatlarını karo boyutuna (256) bölerek ve sonucun tam sayı kısımlarını alarak, geçerli yakınlaştırma düzeyindeki karo koordinatını yan ürün olarak elde edersiniz.

Örnek

Aşağıdaki örnekte Chicago, IL koordinatları gösterilmektedir: enlem/boylam değerleri, dünya koordinatları, piksel koordinatları ve karo koordinatları. Çeşitli yakınlaştırma seviyelerindeki koordinat değerlerini 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.