PhoneGap/Cordova Geolocation API

3 Mart 2013
Bu yazıyı beğendiysen paylaşmayı unutma :)
Pin It

Geolocation API, enlem ve boylam gibi cihaz konum bilgisini elde etmenizi sağlar.

Konum bilgileri GPS, IP adresi, RFID, WiFi, Bluetooth MAC adresleri ve GSM/CDMA hücre kimliği gibi kaynaklardan sağlanır. Fakat Geolocation API, doğru bir konum sonucu elde edeceğinizin garantisini vermez.

Bu API, W3C Geolocation API tabanlıdır. Android, BlackBerry, Bada, Windows Phone 7-8, webOS ve Tizen gibi bazı cihazlar W3C Geolocation API implemantasyonunu sağlar ve cihazlar için Cordova implemantasyonunu kullanmak yerine dahili destek kullanılır. Desteklenmeyen cihazlarda ise W3C spesifikasyonunun yer aldığı Cordova implemantasyonunu kullanılır.

“geolocation.getCurrentPosition” Kullanımı

Position” nesnesi aracılığı ile cihazın o an ki konum bilgisi elde edilir.

Kullanım Şekli:
navigator.geolocation.getCurrentPosition(geolocationSuccess,
[geolocationError],
[geolocationOptions]);

Örnek-1:

Kod   
document.addEventListener("deviceready", onDeviceReady, false);
 
function onDeviceReady() {
	navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
 
function onSuccess(position) {
	var element = document.getElementById('geolocation');
	element.innerHTML = 'Latitude: '       	+ position.coords.latitude          	+ '<br />' +
                    	'Longitude: '      	+ position.coords.longitude         	+ '<br />' +
                    	'Altitude: '       	+ position.coords.altitude          	+ '<br />' +
                    	'Accuracy: '       	+ position.coords.accuracy          	+ '<br />' +
                    	'Altitude Accuracy: '  + position.coords.altitudeAccuracy  	+ '<br />' +
                    	'Heading: '        	+ position.coords.heading           	+ '<br />' +
                    	'Speed: '          	+ position.coords.speed             	+ '<br />' +
                    	'Timestamp: '      	+ position.timestamp   					+ '<br />';
}
 
function onError(error) {
	alert('code: '	+ error.code	+ '\n' +
        	'message: ' + error.message + '\n');
}
Kod   
<p id="geolocation">Konum bilgileri alınıyor...</p>

Aldığı Parametreler

geolocationSuccess: İşlemin başarı ile gerçekleştiği durumda çalışır ve parametre olarak bir “Position” nesnesi alır.
geolocationError: İşlemin hata oluşturduğu durumda çalışır ve parametre olarak bir “PositionError” nesnesi alır. (Opsiyonel)
geolocationOptions: Cihazın konum elde etme özelliklerini özelleştirmek için kullanılır. (Opsiyonel)

“Position” Nesnesi

Geolocation API tarafından oluşturulan konum koordinatları ve zaman bilgisini içerir. İki özelliği bulunur.

coords: Bir coğrafi koordinatlar kümesi barındırır. (Koordinatlar)
timestamp: Koordinatların oluşturulma zamanını belirtir. (Tarih)

“PositionError” Nesnesi

“geolocationError” geri dönüş fonksiyonu ile kullanılır. İşlemde bir hata oluştuğunda geriye iki özelliği ile hata bilgisi döndürür. Bu hata bilgisini sahip olduğu 3 sabit ile gerçekleştirir.

Özellikleri

code: Önceden tanımlanmış hata kodlarını bildirir. Bu kodlar “PositionError” nesnesinin sabitleridir.
message: Hatanın ayrıntılarını açıklayan bir hata iletisidir.

Sabitler

PositionError.PERMISSION_DENIED
PositionError.POSITION_UNAVAILABLE
PositionError.TIMEOUT

“Coordinates” Nesnesi

Coğrafi koordinatlar kümesi barındıran bir nesnedir ve 7 özelliğe sahiptir. “Position” Nesnesinin “coords” özelliği ile kullanılarak koordinat bilgilerinin elde edilmesi sağlanır.

Özellikler

latitude: Enlem derecesini verir. (Sayı)
longitude: Boylam derecesini verir. (Sayı)
altitude: Rakım bilgisini verir. (Sayı)
accuracy: Metre cinsinden enlem ve boylam koordinatlarının doğruluk düzeyini verir. (Sayı)
altitudeAccuracy: Metre cinsinden rakımın doğruluk düzeyini verir (Sayı)
heading: Hareket yönü, Kuzeye göre saat yönünde derece ile verilir. (Sayı)
speed: O anki aracın yere göre hızını, her saniyedeki metre olarak verir. (Sayı)

“geolocationOptions” Parametresi

Cihazın konum elde etme özelliklerini özelleştirmek için kullanılan parametre,

Kullanımı:
{ maximumAge: 3000, timeout: 5000, enableHighAccuracy: true };

Seçenekler

enableHighAccuracy: Uygulamanın mümkün olan en iyi sonuçları almasını sağlar. Varsayılan olarak ağ tabanlı yöntemleri kullanarak konumları elde etmek için çalışır. Bu seçenek “true” olarak ayarlandığında konum bilgilerini elde etmek için uydu konumu gibi daha tutarlı yöntemler kullanır. (Boolean)

timeout: getCurrentPosition veya watchPosition metotları kullanılarak konum bilgisi elde edilmeye çalışılırken beklenebilecek maksimum süreyi belirtir. Eğer gerekli sürede çalıştırılmazsa geolocationError geri dönüş fonksiyonu PositionError.TIMEOUT hata kodu ile geri döndürülür. geolocation.watchPosition kullanıldığında timeout süresince periyodik olarak çağırılır. (Milisaniye)

maximumAge: Pozisyon verilerinin saklanması üzerinden maximumAge değerinden daha düşük süre geçmişse, bu veriler kabul edilir. Aksi durumda kabul edilmez. (Sayı)

“geolocation.watchPosition” Kullanımı

geolocation.getCurrentPosition o andaki konum verilerini alırken, watchPosition ile düzenli aralıkla güncel verilerin alınmasını sağlar.

Kullanım Şekli:
var watchId = navigator.geolocation.watchPosition(geolocationSuccess,
[geolocationError],
[geolocationOptions]);

Buradaki “watchID”, geolocation için unique bir izleme kimliğidir. İzlemenin durdurulması yine bu kimlik sayesinde gerçekleştirilir.

Aldığı Parametreler

geolocationSuccess: İşlemin başarı ile gerçekleştiği durumda çalışır ve parametre olarak bir “Position” nesnesi alır.
geolocationError: İşlemin hata oluşturduğu durumda çalışır ve parametre olarak bir “PositionError” nesnesi alır. (Opsiyonel)
geolocationOptions: Cihazın konum elde etme özelliklerini özelleştirmek için kullanılır. (Opsiyonel)

Örnek-1:

Kod   
document.addEventListener("deviceready", onDeviceReady, false);
var watchID = null;
 
function onDeviceReady() {
	var options = { timeout: 30000 };
	watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
}
 
function onSuccess(position) {
	var element = document.getElementById('geolocation');
	element.innerHTML = 'Latitude: '  + position.coords.latitude  	+ '<br />' +
                    	'Longitude: ' + position.coords.longitude 	+ '<br />' +
                    	'<hr />'  	+ element.innerHTML;
}
 
function onError(error) {
	alert('code: '	+ error.code	+ '\n' +
      	'message: ' + error.message + '\n');
}

“geolocation.clearWatch” Kullanımı

“watchPosition” ile oluşturulan takip işlemini, yani konum verilerini almayı durdurur. Bu işlemi ise “watchID” aracılığı ile yapar.

Kullanım Şekli:
navigator.geolocation.clearWatch(watchID);

Örnek-1:

Kod   
document.addEventListener("deviceready", onDeviceReady, false);
var watchID = null;
 
function onDeviceReady() {
	var options = { enableHighAccuracy: true };
	watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
}
 
function onSuccess(position) {
	var element = document.getElementById('geolocation');
	element.innerHTML = 'Latitude: '  + position.coords.latitude  	+ '<br />' +
                    	'Longitude: ' + position.coords.longitude 	+ '<br />' +
                    	'<hr />'  	+ element.innerHTML;
}
 
function clearWatch() {
	if (watchID != null) {
    	navigator.geolocation.clearWatch(watchID);
    	watchID = null;
    	alert("Konum bilgisi alınma işlemi iptal edildi.");
	}
}
 
function onError(error) {
  alert('code: '	+ error.code	+ '\n' +
    	'message: ' + error.message + '\n');
}
Kod   
<p id="geolocation">Konum bilgileri alınıyor...</p>
<button onclick="clearWatch();">Clear Watch</button>

Bir sonraki yazı da görüşmek üzere..

Benzer Yazılar


DeliPenguen'i Google+'da bulun



  1. teoman
    5 Şubat 2014 - 00:42

    cok iyi! aynen devam.