Last Updated on 8 years by Mas Herdi
Hey all, dengan dirilisnya Google Play Services versi 7.0, ada beberapa fitur baru yang ditambahkan pada library Google Play Services tersebut, salah satunya adalah Google Places API for Android. Google Places API adalah antarmuka/interface yang disediakan untuk Google bagi developer yang ingin mendapatkan data tentang tempat-tempat/places yang ada di Google Maps. So, jika kalian membuka Google Maps pasti kalian bisa melihat semacam marker-marker penanda tempat di sana, yang jika diklik akan muncul data tentang tempat tersebut, seperti alamat, nama tempat, koordinat latlng dan sebagainya. Dengan adanya Places API ini kalian bisa mengambil data tersebut untuk digunakan pada aplikasi yang kalian buat.
Google Places API for Android
Ada banyak fitur-fitur baru yang tersedia pada Google Places API for Android, seperti place picker, get your place, autocomplete, dan sebagainya. Kali ini saya akan berbagi tutorial tentang bagaimana membuat dan mengimplementasikan salah satu fitur baru Places API, yaitu membuat Place Picker sederhana.
Place Picker adalah suatu fitur dimana kita bisa melihat tempat-tempat yang ada di sekitar kita, berdasarkan lokasi kita berada.
Cara kerja Place Picker sendiri cukup mudah karena Google telah menyediakan interface UI untuk Place Picker tersebut, kita tinggal menggunakan Intent yang tersedia untuk menjalankan fungsi Place Picker tersebut. Ketika dijalankan, Place Picker akan mendeteksi koordinat lokasi kita, dan kemudian menampilkan lokasi-lokasi lain yang berada di sekitar kita. Setelah itu kita bisa memilih satu lokasi tertentu dan mengambil data lokasi yang kita pilih tersebut.
Membuat Place Picker menggunakan Google Places API for Android
Pertama-tama, pastikan Google Places API for Android sudah di enabled pada Developer Console project kalian. Caranya pergi ke halaman ini dan kemudian masuk ke API > Google Places for Android dan kemudian click “Enable API”. Setelah itu buatlah sebuah project baru pada Android Studio. Caranya bisa dibaca pada tutorial saya sebelumnya.
Jika sudah, masuk ke file build.gradle kalian dan tambahkan dependencies seperti berikut :
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:25.1.1' compile 'com.google.android.gms:play-services-places:10.0.1' }
Setelah itu, kita mulai dengan membuat layout-nya terlebih dahulu. Layout utama ini bernama activity_main.xml dan hanya berisi satu buah tombol dan satu buah TextView.
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="id.web.twoh.placesapitutorial.MainActivity"> <Button android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:id="@+id/bt_ppicker" android:text="Launch Place Picker" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_below="@id/bt_ppicker" android:id="@+id/tv_place_id" android:text="Place name..." android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
Kemudian kita akan langsung membuat kode utama pada main activity, buka kelas MainActivity.java, atau kelas lainnya yang menjadi main activity pada project Android Studio kalian. Kemudian copy-paste kan kode berikut :
MainActivity.java
package id.web.twoh.placesapitutorial; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.common.GooglePlayServicesNotAvailableException; import com.google.android.gms.common.GooglePlayServicesRepairableException; import com.google.android.gms.location.places.Place; import com.google.android.gms.location.places.ui.PlacePicker; public class MainActivity extends ActionBarActivity { private Button btPlacesAPI; private TextView tvPlaceAPI; // konstanta untuk mendeteksi hasil balikan dari place picker private int PLACE_PICKER_REQUEST = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvPlaceAPI = (TextView) findViewById(R.id.tv_place_id); btPlacesAPI = (Button)findViewById(R.id.bt_ppicker); btPlacesAPI.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // membuat Intent untuk Place Picker PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); try { //menjalankan place picker startActivityForResult(builder.build(MainActivity.this), PLACE_PICKER_REQUEST); // check apabila <a title="Solusi Tidak Bisa Download Google Play Services di Android" href="http://www.twoh.co/2014/11/solusi-tidak-bisa-download-google-play-services-di-android/" target="_blank">Google Play Services tidak terinstall</a> di HP } catch (GooglePlayServicesRepairableException e) { e.printStackTrace(); } catch (GooglePlayServicesNotAvailableException e) { e.printStackTrace(); } } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // menangkap hasil balikan dari Place Picker, dan menampilkannya pada TextView if (requestCode == PLACE_PICKER_REQUEST) { if (resultCode == RESULT_OK) { Place place = PlacePicker.getPlace(data, this); String toastMsg = String.format( "Place: %s \n" + "Alamat: %s \n" + "Latlng %s \n", place.getName(), place.getAddress(), place.getLatLng().latitude+" "+place.getLatLng().longitude); tvPlaceAPI.setText(toastMsg); } } } }
Pada kode di atas sudah ada penjelasan yang saya tulis dalam bentu komentar. Cara kerjanya adalah, ketika kita mengklik tombol yang ada pada menu utama, maka fitur Place Picker akan dijalankan. Di situ kita bisa memilih tempat yang kita inginkan. Setelah kita memilih satu tempat, maka kita akan kembali ke menu utama dengan membawa hasil balikan berupa data Place, seperti alamat, nama tempat, koordinat dan sebagainya. Data itu yang nanti akan ditampilkan pada TextView yang ada di bawah tombol di menu utama. 🙂
Kemudian yang terakhir adalah menambahkan permission-permission yang diperlukan pada Android Manifest. Permissions2 yang dibutuhkan kurang lebih sama seperti saat kita ingin menampilkan Maps pada Android, seperti API Key, GMS Version, permission Internet, lokasi dan sebagainya. Caranya, pada Android Studio, buka AndroidManifest.xml dan tambahkan permissions atau bagian yang kurang di Android Manifest kalian sesuai dengan kode berikut :
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="id.web.twoh.placesapitutorial" > <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <!-- The ACCESS_COARSE/FINE_LOCATION permissions are not required to use Google Maps Android API v2, but are recommended. --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="@string/google_maps_key" /> <activity android:name=".MainActivity" android:label="TWOHsPlacesAPI" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Setelah itu, mari kita running dan jalankan aplikasinya 🙂
Demo
Video :
Ketika pertama kali dijalankan, akan muncul tampilan sebagai berikut :
Klik tombol, maka akan berganti ke halaman Place Picker Google Places API
Kalian bisa memilih tempat yang diinginkan, dari Daftar/List places yang ada, atau dengan cara mengklik marker merah yang ada pada peta. Di contoh ini saya memilih tempat Tour Travel Ceria.
Setelah tempat dipilih, maka aplikasi akan kembali ke halaman utama. Dan kalian akan mendapatkan data dari tempat Tour Travel Cheria tersebut seperti di bawah.
Ada banyak data yang bisa diambil, namun untuk contoh ini saya hanya mengambil nama tempat, alamat dan latlng.
Fitur Place Picker ini akan sangat mempermudah kalian apabila kalian ingin mengambil data lokasi-lokasi yang ada di sekitar kalian, untuk aplikasi Location Based Service misalnya, namun kalian tidak memiliki data lengkap tentang lokasi-lokasi tersebut. Karena dengan Place Picker kalian bisa langsung mengambil data lokasi dari Google Places API for Android. Namun perlu diketahui, data lokasi ini tidak semuanya akurat, ada banyak juga yang koordinatnya melenceng dari tempat sebenarnya, salah dalam penamaan, nomor telepon, dan sebagainya. Namun itu semua masih dapat kalian perbaiki sendiri secara manual.
That’s all 🙂 Semoga membantu, jika ada yang belum jelas silahkan tanyakan di bagian komentar.
Mas Hafizh place picker itu pake google map bukan yaa? trs kalo kita pengen nambahin tempat baru yg blm ada disitu gmn ya mas? trs nanti nya place picker itu khusus cuma nampilin tempat2 yg kita tambahin tadi?
Bukan, Place API itu library tersendiri, namun untuk key nya bisa memakai Map API key. Untuk nambahin tempat ada fiturnya tapi belum saya bahas,
Jika ingin menambahkan tempat dan menampilkan secara manual bisa membaca tutorial saya yang ini http://www.twoh.co/2014/09/menambahkan-fitur-check-pada-android-location-based-service-maps-api-v2/
gan cara mengatasi “unused import statement” gimna?
saya copas kode mainactivity.java tapi ada sebagian package yg tidak kebaca..
tinggal dihapus aja gan import nya yang unused
Mas Hafiz , klo pakai android eclipse bisa gaa untuk buat android material design ?
Bisa, tapi lebih disarankan pakai Android Studio karena itu yang resmi disupport oleh Google. Baca tutorial Android Studio berbahasa Indonesia di sini http://www.twoh.co/2014/12/tutorial-membuat-aplikasi-android-menggunakan-android-studio/
mas, saya udah ikutin tapi kok muncul mapsnya cuman 2 detik ya ? kenapa ya ? di log catnya kaya gini mas I/Timeline: Timeline: Activity_launch_request time:1020572616
Sudah diupdate ya, bisa langsung copy dari source code di sini https://github.com/twoh/twoh-places-location-api-sample
bung klo seperti ini “android:value=”@string/google_maps_key” /> “,, solusinya gmana?
mohon penecerahan..
thanks senelumnya..
itu diganti dengan API keynya, cara mendapatkannya bisa dilihat di sini
https://www.twoh.co/2016/06/05/cara-termudah-mendapatkan-google-maps-api-key-v2/
maaas kok alamat terdekat nya tidak muncul yaaa maas hafizh lalu map nya cuma keluar 3 detik lalo hilang
mohon bantuannya mass hafizh, lalu pas saya klik ambil alamatnya isinya NULL Terima kasih
coba dilihat di log cat errornya gimana
mas Hafizh dependencies nya di tambahkan di build.gradle yang mana, (project) atau (module) dan yang di module udah ada dependenciesnya apakah di tmbhkan disitu..
terima kasih..
build gradle di module dependencies
mas kok import LocationService nya merah ya? nggak ke detect
terimakasih
Coba cek yang terbaru di GiTHUB gan
udah ikutin, udah download projectnya, kok tetep keluar setelah 2 detik ya
Coba import nya as a module gan, bikin project Android baru dulu. Habis itu import source code ane sebagai project