Genel

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

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

//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=“//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=”//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 :

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

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

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

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

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

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

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

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

Android Working with Google Maps

12 thoughts on “Android Studio Google Maps

  • Noname

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

    Yanıtla
  • AndroidMap

    rendering problems
    The following classes could not be instantiated:
    – com.google.android.gms.maps.MapFragment (Open Class, Show Exception, Clear Cache)
    Tip: Use View.isInEditMode() in your custom views to skip code or show sample data when shown in the IDE. If this is an unexpected error you can also try to build the project, then manually refresh the layout.

    mapfragmenti ekrana attığım zaman bu hatayı alıyorum yardımcı olabilir misiniz

    Yanıtla
  • ibrahim

    hocam merhabalar google maps apisini uygulamama ekledim normal apk alıp telefona attığım zaman çalışıyor ama markete attığım zaman ordan indirdiğimde çalışmıyor haritalar sol altta google simgesi geliyor öylece kalıyor sorun ne olabilir

    Yanıtla
  • arf

    Merhaba Hocam ,

    Bu kodları andoid studioda nasıl derleyip çalıştırabiliriz?
    Örneği hastane kelimesini yazınca yakındaki hastaneleri gösterebilecek mi ?
    Şimdiden teşekkürler.

    Yanıtla
  • ilyas çiçek

    merhaba. tüm anlatılanları yapıyorum ama yine de hiçbir event gelmiyor. google yazısı çıkıyor ve ekran beyaz kalıyor sadece. bu keystore dediğimiz şey imza mı oluyor?
    keytool.exe -list -v -alias test -keystore “C:\Users\LENOVO-2\Desktop\imza_regionsoft\regionsoftimza” -storepass sifre -keypass sifre

    bu şekilde bana bir SHA1 kodu veriyor. onu gidip API Consolda yapıştırıp yeni key alıyorum.onu gerekli yere yapıştırıp tekrar apk oluşturuyoruz.Eksik bir şeyler mi yapıyorum acaba ? Yardım edersen çok sevinirim çözemedim bir türlü

    Yanıtla
  • merve

    merhavlar,login olmuş kullancıların harita üzerinden konumlarını nasıl gösterebilirim ?

    Yanıtla
    • Merhabalar,

      Login olmuş kullanıcıların enlem ve boylam bilgisini login olan kullanıcı id ile kaydederek harita üzerinde gösterebilirsiniz.

      Yanıtla
  • taylan

    ümit birşey sorucam,şimdi uygulama üzerinden servis kontrolü yapmak istiyorum yakınlık uzaklık yada konum gibi.uygulamaya giren kullanıcı comboboxdan güzergahı seçip göster dediğinde servis nerede görmeli.budur uygulama.Öncelikle servis soförüne yüklesem uygulamayı sadece konumu gönderse,serverda kaydetsem bu konumu,son kullanıcı serverdan ulaşsa diye düşünüyorum.mantık çerçevesinde böyle mi olmalı yoksa bilmediğim uygulama arası port haberleşme falan varmı ? yada nasıl birşey üretebilirim.

    Yanıtla
  • taylan

    ümit birde proje tamamen aynı şekilde yapmama rağmen sorun oluştu şimdi telefona yüklemede sorun var,pc’de de deneyemedim.apikey iki defa aldım ama releaese almıştım o yüzden olabilirmi ?

    Yanıtla
  • Tayfun

    Hocam kolay gelsin. Bi sorum olucak . Ben kuryeyim navigasyon ile cok isim oluyor. Mesela ben haritalarimi kullaniyorum. Bir adrese ulastigimda diger adrese gidicem ama navigasyon sapitiyor.ben istiyorumki gidecegim adresleri favorilere ekledikten sonra otomatik rotalama yapip dolasmadan yakittan tasarruf ederek pratik olarak noktaya ulasmak google bu benim dedigimi yapiyor ama sadece 10 tane durak noktasi ekliyebiliyoruz ama ben gunde 60 adrese gidiyorum sizce istedigim gibi bisey yapilabilirmi. Umarim anlatabilmisimdir.

    Yanıtla
  • tayfun

    hocam merhaba peki bu kodlamaya otomatık rotalama yapabılırmıyız? örnegin; 30 adres kayıt ettım ben rotalama yaparak hepsıne otomatık tek tek gıdıcem boyle bırsey google harıtalarda var ama sadece 9 adrese durak eklıyebılıyoruz. bunu daha fazla yapma ımkanımız varmı acaba?

    Yanıtla

umiitkose için bir cevap yazın Cevabı iptal et

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