
1-) Öncelikle programımızda kullanacağımız haritanın ekranını belirleyecek olan UI’mizi yazalım. “layout” klasörünün içerisinde maps.xml dosyasını oluşturalım.
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
android:id="@+id/map_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="1. YAZIDA OGRENEREK ALDIGINIZ API KEYI BURAYA YAZIN"
/>
</LinearLayout>
Harita ekranın gözükecek ekranımızı belirledik. Yukarıdaki kodlara bakınca, uygulamamızda Google MAPs açıldıktan sonra tüm ekranı kaplaması gerektiğini söylemek dışında herhangi bir şey yapmadık. apiKey= “” kısmına kendi elde ettiğimiz api key’ini yazdık.
2-) ikinci adımda, bir tane class MapActivity class’ı oluşturacağız. Bunun için herhangi bir isimde class yazıp extends MapActivity yazacağız. Ben class ismimi MapsProcess olarak verdim.
MapView map;
@Override
protected void onCreate(Bundle icicle) {
// TODO Auto-generated method stub
super.onCreate(icicle);
setContentView(R.layout.maps);
map = (MapView) findViewById(R.id.map_view);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
Yukarıda gördüğünüz MapActivity class’ımızı oluşturduk. Biz bu classı oluşturup, MapActivity’i extend ettiğimizde eclipse bize isRouteDisplayed() method’unun override edilmesi gerektiğini söyledi. Bu method, rutin bilgileri otomatik olarak alabilmemizi sağlıyor. Bu rutin bilgileri mesela trafik yön veya adres bilgileri gibi düşünebiliriz. Bizim şimdilik bununla herhangi bir işimiz olmadığı için return false olarak yazdık.
Her android activity’sinin yaşam döngüsü, OnCreate() methodu ile başlar. Bizim MapActivity classımızın yaşamı burada başlıyor. Bu method içerisine baktığımızda, Maps.xml dosyamız içerisindeki MapsView componentimizi üzerinde işlem yapabilmek için java kodumuz içerisinde çağıracağız. Bunun için class’ın hemen altında bir tane MapView oluşturduk ve alt satırlarda da xml dosyası içerisinden ilgili componentin ismini çağırdık.
3-) Haritamız bir butona basıldığı zaman açılsın demiştik. Önce butonumuzun listener’ını yazalım.
ekranda ilk karşımıza gelecek olan butona listener ekledik, tıklandığı zaman MapsProcess isimli activity’i başlatmasını söyledik. Bunun için Intent kullandık. Fakat bir activity’nin başlatılabilmesi için bu kadarı yeterli değil. Programımızın manifest dosyası içerisine intent ile başlacağımız classın bir acticity olduğunu belirtmemiz gerekiyor. Bunun için
4-) Son olarak, yine AndroidManifest.xml dosyası içerisinde yapmamız gereken 2 ufak iş kaldı. Birinicisi, programımıza Maps kütüphanelerini kullanacağımızı söyleyeceğiz, ikincisi de programımızın internete bağlanabilip, haritayı gösterebilmesi için gerekli permission’ı vereceğiz. Aşağıdaki gibi;
sonuç olarak AndroidManifest.xml dosyası şu halde olmuş oluyor;
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ferhan.akman.GoogleMaps">
<application android:icon="@drawable/icon">
<uses-library android:name="com.google.android.maps"/>
<activity android:name=".FirstGoogleMapsApp"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MapsProcess" android:label="First Maps Activity"/>
</application>
<uses-permission xmlns:android="http://schemas.android.com/apk/res/android" android:name="android.permission.INTERNET"></uses-permission>
</manifest>
Uzun ve karmaşık gibi gözükse de, Android’in genel konseptini anladıktan sonra oldukça basit olduğunu göreceksiniz.
Programın çalışır haldeki proje dosyasını buradan indirebilirsiniz.







Ben bir WebView olusturup, burada mapstraction framework ile open streets map api’yi calistirmayi basardim. cunku open street map in hicbir copyright sorunu yok, istedigin gibi kullanabilirsin, hatta butun imagery i indirip kendi map servisi ni bile olusturabilirsin kendi serverin da neyse. Daha sonra da webview de eklenen javascripti javascript interface olarak activity e bagladim. Bu sekilde, javascript ile butun class lari kontrol edip istedigim degeri alabiliyordum. Ayni sekilde webView.loadURL(“Javascript: sunubunuYap();”); ile java uzerinden javascript fonksiyonlarini da kontrol edebiliyordum. Mesela bu sekilde location llistener i bir javascript fonksiyonu ile baglayip, belli zamanlarda senin yerini gosterip markeri silip, yeni kordinatlara gore bi marker ekleyebilirsin. O zaman dedim su framework u biraz gelistireyim, bu sekilde javascript kopruleri yapayim cok kullanilan aygitlar icin. Zaman bulamadim bi baktim yapmis birileri Phonegap diye. Iste biz turkler hep tembellikten kaybediyoruz
Tesekkurler yazi icin