Android Studio Google Maps

Android Studio Harita (Google Maps V2)

Bugünki dersimizde maps üzerine işlemler nasıl yapılır onları öğreneceğiz. Maddeler halinde sıralarsak;

  • Proje oluşturma
  • Google api key alma
  • Google Maps için gerekli izinler
  • Harita’yı emülatörde gösterme
  • Harita üzerinde konum gösterme

 

Proje Oluşturma..

2015-11-14_22h54_32 2015-11-14_22h54_422015-11-14_22h54_48   2015-11-14_22h54_55

Not: Burada Maps activity’i seçip, içindeki çıkan kodu sitede çalıştırıp key’i içine atarsanız çok daha hızlı elde bilirsiniz..

 

 2015-11-14_22h55_02

Google Play Service

2015-11-14_23h22_37

Android’te maps uygulaması yapmak için ilk işlem Google play service’i yüklemek olucak. Tools à Android à SDK MANAGER’a girin.

2015-11-14_23h22_18

 

SDK Tools’a tıklayın. Google play service’i yükleyin.

 

Projenizin build.gradle app kısmını açın. Dependencies içerisine aşağıdaki kodu ekleyip sync ediniz. Play service kütüphanesini kullanabiliyoruz artık.

compile ‘com.google.android.gms:play-services-maps:7.8.0′

Google api key alma

 

Uzun kısım burası. Burayı doğru halledersek gerisi sorunsuz olarak gelecektir.

https://console.developers.google.com/project kısmında Create Project kısmına tıklayın.

2015-11-14_22h56_26

2015-11-14_22h56_51

Bir proje ismi girin.

Gelen ekranda API MANAGER kısmına girin. İlk işlem Harita’yı console’da aktif edeceğiz. Google Maps Android Apı’ye girin. Enable yapın.

2015-11-14_22h57_44

API MANAGER’da Sol navigation menüde Credentials’a girin. Add Credentials’e girin. API KEY à ANDROID KEY’e girin.

2015-11-14_22h59_11

Şimdi burada 2 işlem yapacağız. Bu sayfa kalsın.

Burada Paket ismi sizin application’ınızdaki oluşturduğunuz paket ismini giriceksiniz. Android Studio’da manifest’te tıklayarak package’ı buraya kopyalabilirsiniz. “com.umiitkose.map” gibi.

SHA kısmı ise iki şekilde yapılır. APK olarak mı test edeceksiniz yoksa emülatörde debug olarak mı. Release ya da debug certificate olarak geçiyor.

Release için uygulamanızın apk dosyasını oluşturup sha kısmına bakacağız.

Build –> Generate Signed APK –> Create New.. –> Keyinizin yolu (Önemli unutmayın yerini..) –> Alias’ı password’leri First and Last Name’i doldurup (Pass’larıda unutmayın. Markete Atacaksanız kesin bir yerde saklayın. Not defterinede bilgileri kaydedin. ) Next –> Finish.

2015-11-14_23h03_33 2015-11-14_23h03_43 2015-11-14_23h03_57

Gelelim oluşturduğumuz Apk dosyamızın SHA’sını öğrenmeye.

Java JDK’mızın kurulu olduğu dizine gelicez. Bende C:\Program Files\Java\jdk1.8.0_31\bin burada. Klasör’ün içinde Shift’e uzun basın ve burada komut satırını çalıştıra tıklayın. (Tırnaklar içinde keyin yolunu yazın.)

keytool -list -v -keystore “Keyimizin Yolu”

2015-11-14_23h12_10

password isteyecek.

Buda Apk oluştururken koyduğumuz password. Sağ Tuş ile imleci seçip sha’nızı kopyalayın. Ve Console’daki Android apı key kısmına oluşturup save’e tıklayın.

2015-11-14_19h44_14

Size bir API KEY döndürecek. Bunuda not alın.

 

Emülatörde Debug olarak test için aşağıdaki videoyu izlemeniz yeterlidir..

Resimlerle anlatırsak..

Daha ayrıntılı bilgi için.

https://developers.google.com/maps/documentation/android-api/signup Bu siteyi inceleyebilirsiniz.

 

Google Maps için gerekli izinler.

Gerekli izinler : Paketinizi kendinizin ki ile değiştirmeyi unutmayın..

<uses-permission android:name=“com.umiitkose.mymaps.permission.MAPS_RECEIVE” />
<permission
android:name=“com.umiitkose.mymaps.permission.MAPS_RECEIVE” android:protectionLevel=“signature” />
<uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE” />
<uses-permission android:name=“android.permission.INTERNET” />
<uses-permission android:name=“com.google.android.providers.gsf.permission.READ_GSERVICES” />
<uses-permission android:name=“android.permission.WRITE_EXTERNAL_STORAGE” />
<uses-permission android:name=“android.permission.ACCESS_COARSE_LOCATION” />
<uses-permission android:name=“android.permission.ACCESS_FINE_LOCATION” />
<!– Maps V2 için OpenGL ES 2.0. gerekli –>
<uses-feature
android:glEsVersion=“0x00020000″
android:required=“true” />
Ve 2. Adımda oluşturduğumuz apı key’i ise belirtilen yere girin..


<meta-data
android:name=“com.google.android.maps.v2.API_KEY”
android:value=“Apı-Keyinizi Buraya girin..” />

Tam olarak aşağıdaki şekil olacak.

<?xml version=“1.0” encoding=“utf-8″?>
<manifest xmlns:android=“http://schemas.android.com/apk/res/android”
package=“com.umiitkose.mymaps” >
<uses-permission android:name=“com.umiitkose.mymaps.permission.MAPS_RECEIVE” />
<permission
android:name=“com.umiitkose.mymaps.permission.MAPS_RECEIVE” android:protectionLevel=“signature” />
<uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE” />
<uses-permission android:name=“android.permission.INTERNET” />
<uses-permission android:name=“com.google.android.providers.gsf.permission.READ_GSERVICES” />
<uses-permission android:name=“android.permission.WRITE_EXTERNAL_STORAGE” />
<uses-permission android:name=“android.permission.ACCESS_COARSE_LOCATION” />
<uses-permission android:name=“android.permission.ACCESS_FINE_LOCATION” />
<!– Maps V2 için OpenGL ES 2.0. gerekli –>
<uses-feature
android:glEsVersion=“0x00020000″
android:required=“true” />
<application
android:allowBackup=“true”
android:icon=“@mipmap/ic_launcher”
android:label=“@string/app_name”
android:theme=“@style/AppTheme” >
<activity
android:name=“.MainActivity”
android:label=“@string/app_name” >
<intent-filter>
<action android:name=“android.intent.action.MAIN” />
<category android:name=“android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<!– Google API Key –>
<meta-data
android:name=“com.google.android.maps.v2.API_KEY”
android:value=“Apı Key Girin.” />
</application>
</manifest>

 

Haritayı emülatörde gösterme

Layout klasöründeki Activity_main.xml’e bir map fragmenti atalım

<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
>
<fragment
android:id=”@+id/map”
android:name=”com.google.android.gms.maps.MapFragment”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
/>
</RelativeLayout>

 

Bunu direk kopyalayın. Şimdi ise apk dosyanızı tekrar oluşturup ister telde deneyebilirsiniz. Yada emülatöre Google play service yükleyip deneyebilirsiniz. Bence ise telefonda denemeniz daha kolay olucak.

Not 1: Eğer uygulama açılıp Google yazısı sol altta olup hiçbir event alamıyorsanız API-KEY’iniz yanlıştır. Uğraşın yapamazsanız irtibat kurabilirsiniz benimle.

 

Gelelim Harita üzerinde işlemler yapmaya

  1. Konum Öğrenme

Harita üzerinde konumumuzu bulalım ve bunu haritada konum açıkken gösterelim. Haritamızı bir googleMap adında değişkene eşitleyelim.

Konum göstermek için öncelikle benim konumumun aktif olması gerekiyor.

setMyLocationEnabled(true); yaparak location’ı açıyoruz. OnMyLocationChaneListener interface’i sayesinde bizim konumumuz değiştikçe otomatik konumu gösterebiliyoruz. Harita üzerinde enlem ve boylam değerlerini alarak bunu bir LatLng sınıfında değerimizi tutuyoruz. animateCamera metodu ile harita üzerinde gösterme işlemini yapıyoruz.
public class MainActivity extends AppCompatActivity {
private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (googleMap == null) {
googleMap = ((MapFragment) getFragmentManager().findFragmentById(
R.id.map)).getMap();
if (googleMap == null) {
Toast.makeText(getApplicationContext(),
“Üzgünüm, map oluşturualamadı”, Toast.LENGTH_SHORT)
.show();
}
googleMap.setMyLocationEnabled(true);
googleMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 17));
googleMap.setOnMyLocationChangeListener(null);
}
});
}}

Marker Ekleme: İşaretçi diyorum ben nedense. Bir yer hakkında bilgi aldığımız kısım.

// create marker
MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title(“Konumum “);

// adding marker
googleMap.addMarker(marker);

Android hive’den aldığım Resimler ile işlemler ise ..

2015-11-15_00h03_01 2015-11-15_00h03_29 2015-11-15_00h03_57 2015-11-15_00h04_13 2015-11-15_00h04_56 2015-11-15_00h05_04

İyi Çalışmalar..

 

 

 

KAYNAKÇA :

http://www.androidhive.info/2013/08/android-working-with-google-maps-v2/

https://developers.google.com/maps/articles/phpsqlajax_v3

https://developers.google.com/maps/articles/phpsqlsearch_v3

http://tugbaustundag.com/gps-ile-en-yakin-noktalari-bulma-android-location-services-ve-google-maps-service-api/

http://www.androidhive.info/2012/08/android-working-with-google-places-and-maps-tutorial/

http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/

http://www.androidhive.info/2015/02/android-location-api-using-google-play-services/

http://www.androidhive.info/2013/08/android-working-with-google-maps-v2/

http://www.androidhive.info/2012/01/android-working-with-google-maps/

Post Author: umiitkose

Android Studio Google Maps” için 2 yorum

  • Noname

    (9 Ekim 2016 - 13:19)

    Projenizin build.gradle app kısmını açın. Dependencies içerisine aşağıdaki kodu ekleyip sync ediniz. Play service kütüphanesini kullanabiliyoruz artık.

    compile ‘com.google.android.gms:play-services-maps:7.8.0′

    Bu kısımda eklenmesi gereken kod satırı,

    build.gradle kod sayfasının neresine eklenmeli?

    .Android e daha yeni başladım. Bu nedenle sıkıntı yaşıyorum epey..

    • umiitkose

      (25 Ekim 2016 - 19:02)

      Dependencies kısmında yaparsanız yararlı olur hocam..

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">