8 Feb 2018

Tutorial Android : Menggunakan Google Map API dan GPS

Kita mungkin sudah terbiasa menggunakan Google Maps untuk pencarian lokasi, bahkan untuk memberitahukan lokasi kita. Saking sudah familiarnya biasanya kita juga ingin mengimplementasikan atau menyisipkan sendiri Google Maps di aplikasi kita. Caranya sangat mudah apalagi saat ini Android Studio memiliki template tersebut untuk membuat Aplikasi dengan dukungan Google Map.

Langsung saja kita gunakan cara mudahnya buat satu buah project baru dengan nama Maps, next saja lalu kita tambahkan sebuah Google Maps Activity 
Menambahkan Activity masrahman28.blogspot.com
Next next saja dan Finish. Jika sudah kita akan diarahkan menuju file google_maps_api.xml
Nah kita harus membuat sebuah API Key nih untuk dapat menampilkan maps pada aplikasi kita, silahkan masuk ke https://console.developers.google.com/apis/ lalu kita masuk ke menu Kredensial, Pilih Buat Kredensial yang Kunci API maka nanti akan muncul langsung API Key yang kita harapkan seperti di bawah ini
Mendapatkan API Key masrahman28.blogspot.com
Untuk penjelasan lebih lengkapnya mengenai mendapatkan API Key Google silahkan Baca Disini

lalu kita tinggal copy saja API Key yang kita punya ke project yang kita buat pada file google_maps_api.xml
API Key masrahman28.blogspot.com
Dan aplikasi sudah bisa dijalankan loh, inget ya koneksi internet nya harus ON biar maps ke load. Lalu gimana lagi nih? dan Picker nya itu default ke Australia pengen berdasarkan lokasi kita saat ini. Oke sekarang saatnya kita memanfaatkan fungsi GPS dari HP kita untuk menentukan posisi yang kita nih jadi Picker yang warna merah itu engga di Australia lagi seperti pada gambar di bawah ini
Google Maps masrahman28.blogspot.com

Pertama kita masuk dulu ke Project Structure pilih menu app dan masuk ke Tab Dependencies. Tambahkan satu buat dependecy yaitu gms:play-services-location biasa untuk version mengikuti dengan versi-versi yang lainnya yah harus disesuaikan. Jika gradle build telah selesai kita masuk lagi ke MapsActivity lagi lalu rubah codingnya menjadi seperti di bawah ini

package com.example.maps;

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

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
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 {
    private GoogleApiClient googleApiClient;
    private GoogleMap mMap;
    Location location;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        if(Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1){
            if(checkCallingOrSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
                ActivityCompat.requestPermissions(MapsActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 88);
            }else{
                buildGoogleApiClient();
            }
        }else{
            buildGoogleApiClient();
        }
    }

    protected synchronized void buildGoogleApiClient(){
        googleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(callbacks).addOnConnectionFailedListener(failed).addApi(LocationServices.API).build();
        googleApiClient.connect();
    }

    @Override
    public void onStop() {
        super.onStop();
        if(googleApiClient!=null){
            googleApiClient.disconnect();
        }
    }

    GoogleApiClient.OnConnectionFailedListener failed = new GoogleApiClient.OnConnectionFailedListener() {
        @Override
        public void onConnectionFailed(ConnectionResult connectionResult) {

        }
    };

    GoogleApiClient.ConnectionCallbacks callbacks = new GoogleApiClient.ConnectionCallbacks() {
        @Override
        public void onConnected(@Nullable Bundle bundle) {
            LocationRequest locationRequest = new LocationRequest();
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
                if (ActivityCompat.checkSelfPermission(MapsActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(MapsActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    return;
                }
            }
            location = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);
            LocationServices.FusedLocationApi.requestLocationUpdates(
                    googleApiClient, locationRequest, loclisten);
        }

        com.google.android.gms.location.LocationListener loclisten = new com.google.android.gms.location.LocationListener() {
            @Override
            public void onLocationChanged(Location loc) {
                if (loc == null)
                    return;
                location = loc;
                lokasirubah(location);
                if(googleApiClient!=null){
                    LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, this);
                }
            }
        };

        private void lokasirubah(Location location) {
            mMap.clear();
            LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
            MarkerOptions marker = new MarkerOptions();
            marker.position(latLng);
            marker.title("Saya Disini");
            mMap.addMarker(marker);
            mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14.0f));
        }

        @Override
        public void onConnectionSuspended(int i) {

        }
    };
}

Jika sudah aplikasi google maps telah selesai kita buat. Jangan lupa untuk mengaktifkan GPS dan jengjreng lihat hasilnya.

Untuk project fullnya Download disini

Tidak ada komentar:

Posting Komentar