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..
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..
Google Play Service
Android’te maps uygulaması yapmak için ilk işlem Google play service’i yüklemek olucak. Tools à Android à SDK MANAGER’a girin.
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.
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.
API MANAGER’da Sol navigation menüde Credentials’a girin. Add Credentials’e girin. API KEY à ANDROID KEY’e girin.
Ş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.
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”
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.
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
- 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 ..
İ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
//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/
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..
Dependencies kısmında yaparsanız yararlı olur hocam..
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
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
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.
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ü
merhavlar,login olmuş kullancıların harita üzerinden konumlarını nasıl gösterebilirim ?
Merhabalar,
Login olmuş kullanıcıların enlem ve boylam bilgisini login olan kullanıcı id ile kaydederek harita üzerinde gösterebilirsiniz.
ü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.
ü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 ?
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.
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?