Android Places API : Membuat PlacePicker Sederhana

Last Updated on 7 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 :

Menu Utama App Place Picker

Menu Utama App Place Picker | (c) nukunukusirokuma.tumblr.com

Klik tombol, maka akan berganti ke halaman Place Picker Google Places API

Tampilan Google Place Picker | Places API

Tampilan Google Place Picker | 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.

Memilih place dari daftar

Memilih place dari daftar

Setelah tempat dipilih, maka aplikasi akan kembali ke halaman utama. Dan kalian akan mendapatkan data dari tempat Tour Travel Cheria tersebut seperti di bawah.

Hasil data balikan dari places yang kita pilih

Hasil data balikan dari places yang kita pilih

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.





Download aplikasi kami di Google Play Store


Tutorial Menarik Lainnya :

18 Comments
  1. Harry April 23, 2015
  2. hellkops March 13, 2016
  3. Gustav Sri Raharjo February 9, 2017
  4. Baptista June 13, 2017
  5. Kun Fadhila June 14, 2017
  6. faris July 2, 2017
  7. redian July 26, 2017
  8. dimas August 22, 2017
    • Hafizh Herdi October 4, 2017

Leave a Reply

Your email address will not be published. Required fields are marked *

TWOH&Co.