Tutorial Maps Async pada Android Maps v2 dengan Play Services 6.5

Sehari yang lalu, Google baru saja merilis update untuk library Play Service yang baru, yaitu Play Service versi 6.5. Play Service yang baru ini mempunyai beberapa fitur baru yang menarik, salah satunya adalah getMapAsync() pada Google Maps Android API v2.

Fitur getMapAsync() ini akan menggantikan method getMap() yang sebelumnya digunakan. Kelebihannya adalah, method getMapAsync() ini mempunyai callbacks yang berjalan secara asynchronous, callback tersebut akan menandakan apakah Google Maps yang diminta sudah tersedia atau belum. Sehingga mudah bagi kita untuk menjalankan method atau fungsi yang hanya bisa dilakukan apabila Google Maps sudah tersedia. Yang mana jika dengan menggunakan method lama getMap(), kita harus melakukan pengecekan manual apakah object map telah tersedia atau belum, seperti ini contoh metode pengambilan object Map lama menggunakan getMap():

GoogleMap map;
SupportMapFragment mapFrag = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        map = mapFrag.getMap();

Dengan menggunakan getMapAsync, cara inisialisasi object GoogleMap menjadi seperti berikut :

            GoogleMap map;
            MapFragment mapFragment;

            //....

            mapFragment = ((MapFragment) getFragmentManager().findFragmentById(R.id.map));
            mapFragment.getMapAsync(new OnMapReadyCallback() {
                        @Override
                        public void onMapReady(GoogleMap googleMap) {
                            mMap = googleMap;
                            setUpMap();
                        }
                    });

Bisa dilihat, method getMapAsync mempunyai callbacks method bernama onMapReady(), method itulah yang nantinya akan memberitahu ke aplikasi kita apakah Google Map sudah tersedia atau belum, yang memudahkan kita untuk melakukan aksi-aksi yang cuma bisa dilakukan apabila GoogleMap sudah ready.

Method getMapAsycn() ini juga hanya bisa dijalankan dari kelas MapFragment, berbeda dengan Android Maps sebelumnya yang menggunakan SupportMapFragment. Karena itu, layout pada XML file tentunya juga harus ikut diubah, berikut adalah code layout activity_maps.xml menggunakan MapFragment.

 

<fragment 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" android:id="@+id/map" tools:context=".MapsActivity"
    android:name="com.google.android.gms.maps.MapFragment" />

Bagi yang ingin belajar, inilah kode lengkap pada main Activity yang bernama MapsActivity.java :

import android.support.v4.app.FragmentActivity;
import android.os.Bundle;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity {

    private GoogleMap mMap; // Might be null if Google Play services APK is not available.
    private MapFragment mapFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        setUpMapIfNeeded();
    }

    @Override
    protected void onResume() {
        super.onResume();
        setUpMapIfNeeded();
    }

    private void setUpMapIfNeeded() {
        mapFragment = ((MapFragment) getFragmentManager().findFragmentById(R.id.map));
        mapFragment.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap googleMap) {
                mMap = googleMap;
                setUpMap();
            }
        });

    }

    private void setUpMap() {
        mMap.setMyLocationEnabled(true);
        mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
    }
}

Method getMapAsync() ini hanya tersedia pada Google Play Services library versi 6.5+, sehingga pastikan kalian telah mengupdate dan menggunakan library Play Services terbaru pada project Android kalian. Untuk kode pada AndroidManifest.xml dan file lainnya, isinya masih sama seperti pada tutorial sebelumnya, tentang cara menampilkan Android Maps v2. Kalian juga tetap membutuhkan Maps API key, dan lain sebagainya. Dan walaupun telah menggunakan library Play Services terbaru ini, kalian tetap bisa menggunakan method getMap() yang lama, namun saya sarankan kalian menggunakan method getMapAsync() yang baru tersebut ketika ingin menampilkan Google Maps pada aplikasi Android kalian.



Download aplikasi kami di Google Play Store


6 Comments

  1. Ace The Great December 19, 2014
  2. Anonymous January 4, 2015
  3. kurniawan February 9, 2016
    • Hafizh Herdi February 10, 2016
      • kurniawan February 10, 2016

Leave a Reply