Mustafa Ferhan Akman

Android: Google Maps API’leri ile Çalışmak – 2

Posted in Android, Makale & Döküman, Programlama by ferhanakman on 28/06/2009

Android: Google Maps API’leri ile Çalışmak – 1 isimli yazımda Android programımız içerisinde Google Map’s özelliğini kullanabilmemiz için bize lazım olan API KEY’i almayı öğrendiğimize göre artık örnek bir uygulama ile asıl konumuza giriş yapalım.

Program ilk açıldığında karşımıza bir tane buton çıksın ve biz butona tıkladığımızda haritamız açılsın.

android-maps1 android-maps2

Bu programı adım adım yapalım;

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.

<LinearLayout
  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.

public class MapsProcess extends MapActivity {
	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.

        applyBtn = (Button) findViewById(R.id.applyBtn);
        applyBtn.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				Intent i = new Intent(getApplicationContext(), MapsProcess.class);
				startActivity(i);
			}
        });
    }
}

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 <activity> </activity> tagları içerisinde bunu programımıza belirttik.

  <activity android:name=".MapsProcess" android:label="First Maps Activity"/>

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;

<uses-library android:name="com.google.android.maps"/>

    <uses-permission xmlns:android="http://schemas.android.com/apk/res/android" android:name="android.permission.INTERNET"></uses-permission>

sonuç olarak AndroidManifest.xml dosyası şu halde olmuş oluyor;

<?xml version="1.0" encoding="utf-8"?>
<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.

Diğer yazımda, Bu harita üzerinde çeşitli işlemler yapacağız.

Şununla etiketlendi:, , , ,

2 Yanıt

Subscribe to comments with RSS.

  1. Alokatalog said, on 15/07/2009 at 5:31 pm

    elinize sağlık Mustafaçığım verimli bilgi.
    Sitede http://www.farkinda.com.tr iletişime koyacağım ekledim fakat Maps API nedemek anlamış değilim. google mapsde kordinatlarımı belli. panele kurduğum programda Maps API var neyi eklemeliyim

  2. ferhanakman said, on 15/07/2009 at 8:43 pm

    Android: Google Maps API’leri ile Çalışmak – 1 isimli yazımda, nasıl MAPS API KEY alınacağını anlattım, oraya bakabilirsiniz.

    http://ferhanakman.wordpress.com/2009/05/23/androide-google-maps-apileri-ile-calismak/


Yorum Yapın