Menampilkan Lokasi Saat Ini pada Maps Android dengan Google Maps API

Hai sobat, ketemu lagi dengan saya di artikel tentang pemrograman android. Pada artikel sebelumnya saya terlah menjelaskan tentang Cara Menampilkan Map di Aplikasi Android Menggunakan Google Maps API di Androud Studio. Dan pada kali ini saya akan menunjukkan Cara Mudah Menampilkan Lokasi Perangkat Saat Ini di Maps Androd.

Menampilkan Lokasi Saat Ini pada Maps Android dengan Google Maps API

Dalam pembuatan aplikasi android, kita dapat menambahakan berbagai fitur ke dalam aplikasi yang dibuat. Salah satu fitur unggulan dalam apliaksi android adalah fitur menampilkan lokasi di Maps Android. Dan untuk menampilkan lokasi di maps android juga sangat mudah karena Google sudah menyiapkan berbagai tools dan dokumentasi tentang menampilkan lokasi di maps android, tapi untuk yang baru belajar mungkin akan sedikit membingungkan. *seperti yg saya rasakan 😂 

Oke, dalam artikel ini saya akan meneruskan artikel saya sebelumnya, silahkan bisa mencobana atau langsung ke tahap ini.

Menampilkan Maps Android dengan Google Maps API di Android Studio

Pada artikel ini kita akan menampilkan lokasi perangkat saat ini (MyLocation) di Maps Android. Untuk melakukanya kita memanfaatkan pengaturan pada komponen Maps Android yaitu .setMyLocationEnabled(). Dengan mengaktifkan pengaturan ini, maps akan menampilkan My-Location Layer dan memberikan indikasi lokasi, serta menampilkan tampilan tombol untuk berinteraksi dengan lokasi perangkat. Tetapi untuk menggunakan pengaturan Maps Android ini, kita perlu menambahkan user permission pada perangkat untuk android versi Marshmallow (API 23) ke atas yaitu permission ACCESS_COARSE_LOCATION atau ACCESS_FINE_LOCATION. Untuk perangkat versi dibawah API 23 tidak memerlukan permintaan uses permission.

Nah itu sedikit teorinya, sekarang saatnya mengimplementasikan ke dalam aplikasi :

Pembuatan Project

Seperti yang saya sampaikan sebelumnya, artikel ini menggunkaan project dari artikel sebelumnya.

Pembuatan Tampilan

Tampilannya masih sama, tidak ada yang diubah.

Pembuatan Program Java

Nah di sini kita akan ubah kode di dalam file MainActivity.java. Kita implementasikan class MainActivity ke beberapa method class yaitu GoogleMap.OnMyLocationButtonClickListener dan GoogleMap.OnMyLocationClickListener. Untuk lebih jelasnya sobat bisa lihat di gamber berikut 

Menampilkan Lokasi Saat Ini pada Maps Android dengan Google Maps API

Untuk kodenya seperti ini

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
        , GoogleMap.OnMyLocationButtonClickListener
        , GoogleMap.OnMyLocationClickListener {

..........

}

Setelah mengimplementasikan class, selanjutnya adalah menambah kode permintaan uses-permission dan memberikan pengaturan MyLocationEnabled serta memberi perintah ketika tombol MyLocation diklik di dalam method onMapReady() seperti gambar di bawah ini 

Menampilkan Lokasi Saat Ini pada Maps Android dengan Google Maps API

Untuk kodenya bisa diambil dari sini

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                    && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION
                        , Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
            } else {
                mMap.setMyLocationEnabled(true);
            }
        } else {
            mMap.setMyLocationEnabled(true);
        }

        mMap.setOnMyLocationButtonClickListener(this);
        mMap.setOnMyLocationClickListener(this);

Kode di atas adalah untuk meminta permission jika permissionya belum diijinkan di perangakat. Ketika aplikasi sudah menerima pilihan user, maka aplikasi perlu memprosesnya di method baru dengan nama onRequestPermissionsResult(). Jika pengguna menerima permintaan dari aplikasi, maka tombol MyLocation akan tampil di Maps Android. Untuk kodenya sebagai berikut :

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == 1) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show();
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                    mMap.setMyLocationEnabled(true);
                }
            } else {
                Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
            }
        }
    }

Selanjtnya kita tambahkan aksi kerika tombol MyLocation diklik maka akan tampil Toast dan ketika tanda lokasinya diklik maka akan menampilkan informasi lokasi yang diambil dari variable lokasi.

@Override
    public boolean onMyLocationButtonClick() {
        Toast.makeText(this, "My Location Button Clicked", Toast.LENGTH_SHORT).show();
        return true;
    }

    @Override
    public void onMyLocationClick(@NonNull Location location) {
        Toast.makeText(this, "Lokasiku saat ini : " + location, Toast.LENGTH_LONG).show();
    }


Untuk kode lengkap file MainActvity.java seperti di bawah ini

package com.blogspot.blogsetyaaji.firstmap;

import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.widget.Toast;

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

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
        , GoogleMap.OnMyLocationButtonClickListener
        , GoogleMap.OnMyLocationClickListener {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }


    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));

        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                    && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION
                        , Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
            } else {
                mMap.setMyLocationEnabled(true);
            }
        } else {
            mMap.setMyLocationEnabled(true);
        }

        mMap.setOnMyLocationButtonClickListener(this);
        mMap.setOnMyLocationClickListener(this);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == 1) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show();
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                    mMap.setMyLocationEnabled(true);
                }
            } else {
                Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
            }
        }
    }

    @Override
    public boolean onMyLocationButtonClick() {
        Toast.makeText(this, "My Location Button Clicked", Toast.LENGTH_SHORT).show();
        return true;
    }

    @Override
    public void onMyLocationClick(@NonNull Location location) {
        Toast.makeText(this, "Lokasiku saat ini : " + location, Toast.LENGTH_LONG).show();
    }
}




Menambah Permisson

Tak lupa, seperti yang tadi saya sampaikan bahwa kita membutuhkan beberapa ijin. Di sini kita tambahkan satu permission lagi yaitu permission  ACCESS_COARSE_LOCATION. kodenya seperti berikut ini 

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>


Menjalankan Aplikasi

Pembuatan aplikasinya sudah selesai, sekarang aplikasi sudah siap dijalankan. Kurang lebih akan jadi seperti gambar di bawah 

Menampilkan Lokasi Saat Ini pada Maps Android dengan Google Maps API

Menampilkan Lokasi Saat Ini pada Maps Android dengan Google Maps API


Oke, sekian artikel tentang Menampilkan Lokasi Saat Ini pada Maps Android dengan Google Maps API, semoga bermanfaat. Jika ada pertanyaan, sobat dapat berkomentar di bawah. Silahkan sobat share ke sobat lainya jika sobat menyukai artikel ini karena berbagi itu indah. Sampai jumpa di artikel selanjutnya.. 😁

Previous
Next Post »

Terimakasih atas kunjunganya.
Silahkan berkomentar dan beri kritik serta saran.
Jangan lupa difollow.

ConversionConversion EmoticonEmoticon