Bu fonksiyon parametre olarak bizim gönderdiğimiz location değişkeni içerisindeki koordinat bilgilerini alıyor. Koordinatlar virgüllü sayılar oldukları için double değişkeni ile tanımlıyoruz. Artık latitude ve longitude bilgilerini aldık ve kişinin bulunduğu konumu biliyoruz.
MapActivity içinde onResume ve onPause olmak üzere iki fonksiyon daha var. Bunlar adından da anlaşılacağı gibi activity devam ettiği sürece çalışan ya da activity durdurulduğu zaman çalışan iki fonksiyon. Activitymiz çalıştığı sürece biz konum bilgisini güncellemeliyiz. Bu süre içerisinde kullanıcı hareket halinde olabilir ve konumu sürekli değişiyor olabilir.
[Seç][/url]@Override
protected void onResume() {
super.onResume();
lm.requestLocationUpdates(provider, 400, 1, this);
myLocOverlay = new MyLocationOverlay(GPSanasayfa.this, mapView);
myLocOverlay.enableMyLocation();
mapView.getOverlays().add(myLocOverlay);
myLocOverlay.runOnFirstFix(new Runnable() {
public void run() {
mc.animateTo(myLocOverlay.getMyLocation());
}
});
mapView.postInvalidate();
}
requestLocationUpdates ile konumumuzu güncel tutuyoruz. Sağlayıcımızı belirtiyoruz (provider) , ne kadar sürede konum bilgisini tekrar edeceğini milisaniye cinsinden belirtiyoruz (400) , ne kadarlık bir menzil bizim için yeni bir konum demektir onu belirtiyoruz (1) , son olarakta hangi activityde tekrar edeceğini belirtiyoruz (this) .
Yukarıda belirtmiş olduğum location overlay (harita üzerinde konumumuzu gösteren mavi nokta) ile activitymiz üzerindeki mapviewi ilişkilendiriyoruz. Ve Location overlay'ın konum bilgimizi kullanmasını sağlıyoruz (enableMyLocation()).
Haritamıza location overlayımızı ekliyoruz ve haritanın şuanki konumumuza hareket etmesini yani sayfayı ortalamasını sağlıyoruz.
Son olarak posInvalidate() ile haritamızın görünümünü yeniliyoruz.
Map Activitymiz çalıştığı süre boyunca bu kısımdaki kodlar çalışacaktır. Activitymiz durduğu anda ise onPause çalışacaktır. Şimdi ona bakalım.
[Seç][/url]@Override
protected void onPause() {
super.onPause();
lm.removeUpdates(this);
myLocOverlay.disableMyLocation();
}
RemoveUpdates ile artık konum bilgisi istemiyoruz güncelleme diyoruz (https://www.replikacep.com/proxy.php?request=http%3A%2F%2Freplikacep.com%2FSmileys%2Fsuperuser%2Fsmiley.gif%2522%2520class%3D%2522smiley.png&hash=10d243f4e2590142468a1f488152ebfb91670129)
disableMyLocation() komutu ile de benim konumumu kullanma adam ol diyoruz (https://www.replikacep.com/proxy.php?request=http%3A%2F%2Freplikacep.com%2FSmileys%2Fsuperuser%2Fsmiley.gif%2522%2520class%3D%2522smiley.png&hash=10d243f4e2590142468a1f488152ebfb91670129)
Uygulamamız hazır. Emulator üzerinde GPS olmadığı için bilgisayar üzerinde programımızı sağlıklı bir şekilde test etmek ne yazık ki mümkün değil. DDMS yardımı ile Emulator Control sekmesinden el ile koordinat bilgisi girerek test etmek mümkün ancak yinede cihazdaki kadar sağlıklı sonuç verdiğini düşünmüyorum.
Manifest dosyamıza gereken izinleri vermeyi unutmuyoruz
[Seç][/url]<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-library
android:name="com.google.android.maps"
android:required="true" >
</uses-library>
Aklınıza takılan kısımda sorabilirsiniz.
Yazı tamamen bana aittir paylaşırken kaynak belirtmeyenin telefonu brick olsun (https://www.replikacep.com/proxy.php?request=http%3A%2F%2Freplikacep.com%2FSmileys%2Fsuperuser%2Fsmiley.gif%2522%2520class%3D%2522smiley.png&hash=10d243f4e2590142468a1f488152ebfb91670129)
Kaynak : http://blog.melihmucuk.com/android-programlama-konum-bulma-ve-map-islemleri/ (http://blog.melihmucuk.com/android-programlama-konum-bulma-ve-map-islemleri/)