PMO2 Pertemuan 5 Maps,GPS(Google Maps Api)

Maps

Google Maps adalah layanan pemetaan desktop yang web yang dikembangkan oleh Google. Menawarkan citra satelit, peta jalan, 360 ° panorama jalan-jalan (Street View), kondisi lalu lintas real-time (Google Traffic), dan perencanaan rute untuk bepergian dengan berjalan kaki, mobil, sepeda (dalam versi beta), atau angkutan umum.

GPS adalah sistem navigasi yang menggunakan satelit yang didesain agar dapat menyediakan posisi secara instan, kecepatan dan informasi waktu di hampir semua tempat di muka bumi, setiap saat dan dalam kondisi cuaca apapun.

Sedangkan alat untuk menerima sinyal satelit yang dapat digunakan oleh pengguna secara umum dinamakan GPS Tracker atau GPS Tracking, dengan menggunakan alat ini maka dimungkinkan user dapat melacak posisi kendaraan, armada ataupun mobil dalam keadaan Real-Time.

Cara Kerja GPS

Bagian yang paling penting dalam sistem navigasi GPS adalah beberapa satelit yang berada di orbit bumi atau yang sering kita sebut di ruang angkasa. Satelit GPS saat ini berjumlah 24 unit yang semuanya dapat memancarkan sinyal ke bumi yang lalu dapat ditangkap oleh alat penerima sinyal tersebut atau GPS Tracker.

Selain satelit terdapat 2 sistem lain yang saling berhubungan, sehingga jadilah 3 bagian penting dalam sistem GPS. Ketiga bagian tersebut terdiri dari: GPS Control Segment (Bagian Kontrol), GPS Space Segment (bagian angkasa), dan GPS User Segment (bagian pengguna).:

GPS Control Segment

Control segment GPS terdiri dari lima stasiun yang berada di pangkalan Falcon Air Force, Colorado Springs, Ascension Island, Hawaii, Diego Garcia dan Kwajalein. Kelima stasiun ini adalah mata dan telinga bagi GPS. Sinyal-sinyal dari satelit diterima oleh bagian kontrol, kemudian dikoreksi, dan dikirimkan kembali ke satelit. Data koreksi lokasi yang tepat dari satelit ini disebut data ephemeris, yang kemudian nantinya dikirimkan ke alat navigasi yang kita miliki.

GPS Space Segment

Space Segment adalah terdiri dari sebuah jaringan satelit yang tediri dari beberapa satelit yang berada pada orbit lingkaran yang terdekat dengan tinggi nominal sekitar 20.183 km di atas permukaan bumi. Sinyal yang dipancarkan oleh seluruh satelit tersebut dapat menembus awan, plastik dan kaca, namun tidak bisa menembus benda padat seperti tembok dan rapatnya pepohonan.

Terdapat 2 jenis gelombang yang hingga saat ini digunakan sebagai alat navigasi berbasis satelit. Masing-masingnya adalah gelombang L1 dan L2, dimana L1 berjalan pada frequensi 1575.42 MHz yang bisa digunakan oleh masyarakat umum, dan L2 berjalan pada frequensi 1227.6 Mhz dimana jenis ini hanya untuk kebutuhan militer saja.

GPS User Segment

User segment terdiri dari antenna dan prosesor receiver yang menyediakan positioning, kecepatan dan ketepatan waktu ke pengguna. Bagian ini menerima data dari satelit-satelit melalui sinyal radio yang dikirimkan setelah mengalami koreksi oleh stasiun pengendali (GPS Control Segment).

Fungsi dan Kegunaan GPS

Untuk apa tujuan Amerika Serikat membuat sistem GPS yang notabene telah memakan biaya sangat besar untuk biasa pembuatan, pengoperasian dan perawatan. Tentunya bukan tanpa manfaat, ada banyak manfaat yang bisa didapatkan dari sistem navigasi GPS bagi masyarakat seluruh dunia dan khususnya bagi pemerint Amerika Serikat itu sendiri. Beberapa fungsi dan kegunaan GPS tersebut bisa dibagi kepada 5 poin, yaitu:

GPS untuk Militer

GPS dapat dimanfaatkan untuk mendukung sistem pertahanan militer. Lebih jauh dari itu bisa memantau pergerakan musuh saat terjadi peperangan, juga bisa menjadi penuntun arah jatuhnya bom sehingga bisa lebih tertarget.

GPS untuk Navigasi

Dalam kebutuhan berkendara sistem GPS pun sangat membantu, dengan adanya GPS Tracker terpasang pada kendaraan maka akan membuat perjalanan semakin nyaman karena arah dan tujuan jalan bisa diketahui setelah GPS mengirim posisi kendaraan kita yang diterjemahkan ke dalam bentuk peta digital.

GPS untuk Sistem Informasi Geografis

GPS sering juga digunakan untuk keperluan sistem informasi geografis, seperti untuk pembuatan peta, mengukur jarak perbatasan, atau bisa dijadikan sebagai referensi pengukuran suatu wilayah.

GPS untuk Sistem Pelacakan Kendaraan

Fungsi ini hampir sama dengan navigasi, jika dalam navigasi menggunakan perangkat penerima sinyal GPS berikut penampil titik koordinatnya dalam satu perangkat, sedangkan untuk kebutuhan sistem pelacakan adalah alat penampil dan penerima sinyal berbeda lokasi.

Contohnya kita bisa mengetahui lokasi kendaraan yang hilang dengan melihat titik kordinat yang dihasilkan dari alat yang terpasang dalam kendaraan tersebut, untuk melihatnya bisa melalui media smartphone atau alat khusus lainnya.

GPS untuk Pemantau Gempa

Saat ini teknologi GPS yang terus ditingkatkan menghasilkan tingkat ketelitian dan keakuratan yang sangat tinggi sehingga GPS dapat dimanfaatkan untuk memantau pergerakan tanah di bumi. Dengan hal itu maka para pakar Geologi dapat memperkirakan kemungkinan terjadinya gempa di suatu wilayah.

Manfaat GPS dipetakan menjadi beberapa bidang sebagai berikut:

1. Pelacak Kendaraan

Kejahatan kriminal bisa dijumpai dimanapun dan kapanpun. Banyak kejahatan kriminal pencurian kendaraan yang terjadi saat ini. Maraknya tindak pencurian kendaraan menjadikan masalah yang meresahkan warga. Dengan permasalahan tersebut, GPS memiliki fungsi sebagai pelacak kendaraan.

Kendaraan bisa dipantau dengan menggunakan GPS. Dengan demikian, kita bisa mengetahui letak kendaraan kita, meskipun kendaraan tersebut dicuri. Dengan begitu, kita bisa memanfaatkan GPS untuk mengetahui keberadaan kendaraan kita dengan mudah. Tidak hanya kendaraan, dengan bantuan GPS, kita juga bisa melacak ponsel kita yang hilang / dicuri orang lain.

2. Memantau Gempa dan Bencana

Fungsi menakjubkan yang dimiliki oleh GPS adalah GPS bisa memprediksi kemungkinan adanya gempa. GPS ternyata bisa memantau tanah dalam permukaan bumi. Yang dipantau pada tanah adalah pergerakannya. Dengan mengetahui pergerakan tanah, pihak geologi atau yang memantau gempa bisa melakukan prediksi apakah ada kemungkinan gempa terjadi atau tidak pada suatu wilayah.

3. Sistem Informasi Geografis Wilayah

GPS juga bisa digunakan untuk melakukan pengukuran jarak pada wilayah tertentu. Dengan adanya GPS, kita bisa mendapatkan berbagai data yang berhubungan dengan geografis, sehingga ketika kita membutuhkan data tersebut untuk dijadikan penelitian bisa didapatkan dengan mudah. Informasi yang dihasilkan dari GPS pun sangat banyak sehingga bisa dijadikan sebagai bahan pertimbangan data penelitian.

4. Navigasi Jalan

GPS sangat membantu para pengguna jalan. Mengapa demikian? Dengan menggunakan GPS, para pengguna jalan, khususnya pengguna yang tidak mengetahui jalur atau arahan melalui jalan mana saja untuk bisa sampai pada tujuan tertentu.

 

Based Location

Location Based Service (LBS) adalah sebuah layanan yang berbasis pada lokasi dan diakses melalui perangkat bergerak (Smartphone,dll) dan dapat menampilkan sebuah peta beserta lokasi dimana perangkat bergerak itu berada.
Nah dengan layanan LBS kita dapat mengetahui posisi kita sedang ada dimana, posisi teman, dan posisi rumah sakit atau pom bensin yang jaraknya dekat dengan kita.

contoh yang paling banyak digunakan adalah aplikasi jejaring sosial Path, aplikasi itu menggunakan layanan LBS, udah ga asing lagi dong sama “Check in Path dulu ya” Aplikasi path mengambil lokasi keberadaan kita beserta nama tempatnya lalu dibagian ke teman-teman anda.

Layanan Location Based Service (LBS) menggunakan GPS (Global Positioning System) yang ada pada perangkat bergerak untuk mendapatkan koordinat dan menampilkannya dalam sebuah peta.

Sumber:

https://www.codepolitan.com/menampilkan-peta-dengan-google-maps-api-pada-android-studio-58b3951fbe5bb

https://www.codepolitan.com/menampilkan-lokasi-saat-ini-dengan-maps-api-pada-android-studio-58baa2af5422a

Cara di atas adalah Google Maps for Android. Kurang lebih sama dengan Google Maps untuk iOS.

Menentukan sebuah lokasi yang tersedia menggunakan cara mencari Koordinat

Mendapatkan koordinat suatu lokasi bisa kita lakukan dengan bantuan Google Maps. Bahkan mungkin saja itu merupakan cara yang paling mudah. Titik koordinat memang bermanfaat terutama jika kita ingin menunjukkan suatu lokasi tertentu pada peta. Bila Anda membutuhkannya, ini lah cara mencari koordinat di Google Maps.

  1. Buka website Google Maps(http://www.google.co.id/maps).
  2. Cari lokasi yang ingin diketahui koordinatnya.
  3. Klik kanan pada lokasi tersebut dan Pilih What’s Here?(atau Ada Apa di Sini?)
  4. Koordinat lokasi tersebut akan muncul di kiri bagian kiri atas.
  5. Klik koordinat untuk memastikannya sudah menunjuk lokasi dengan benar.

Bagaimana, mudah kan? Agar lebih paham, mari kita contohkan. Misalnya kita ingin mengetahui koordinat Grand Indonesia. Inilah yang perlu kita lakukan untuk mencari koordinatnya di Google Maps.

Buka Google Maps, dan search dengan kata kunci Grand Indonesia Jakarta.

Setelah lokasi ditemukan, silahkan klik kanan dan pilih opsi Whats’s Here? atau Ada Apa di Sini? jika Anda menggunakan Google dengan Bahasa Indonesia.

Jika itu sudah Anda lakukan, di bagian kanan atas akan muncul koordinat dari Grand Indonesia.

Klik koordinat tersebut untuk memastikan apakah sudah menunjuk lokasi yang tepat.

Sumber :

http://blog.idkeyword.com/cara-mencari-koordinat-di-google-maps/

http://beritamks.com/cara-berbagi-link-lokasi-di-google-maps-iphone-android/

Mencari Lokasi Dengan GPS Di Android

Jika ada yang belum pernah dengar tentang LBS/Location Based Service, LBS atau bahasa Indonesianya Layanan Berbasis Lokasi adalah suatu sistem yang menyediakan layanan yang mempunyai lokasi geografis sehingga bisa kita lihat di peta. Dan salah satu sumber data geografis tersebut yang saat ini sangat mudah kita dapatkan adalah berupa koordinat lokasi yang diambil dari smartphone kita.

Android mempunyai dua macam jenis lokasi sendiri, yaitu coarse-location dan fine-location. 

Lokasi coarse/kasar adalah lokasi user yang ditentukan lewat BTS terdekat, mempunyai presisi yang tidak akurat, namun hemat baterai. Sedangkan lokasi fine-location/lokasi halus, adalah lokasi user yang didapatkan melalui GPS yang sekarang sudah umum ada di perangkat Android. Fine-location mempunyai presisi yang lebih tinggi, namun boros baterai.

Pada Android, penentuan lokasi ini semua diatur oleh sebuah kelas yang bernama LocationManager, jadi location manager-lah yang akan menentukan kapan kita harus memakai fine-location, atau coarse-location apabila suatu saat GPS dimatikan. Location Manager juga secara otomatis akan mendeteksi perubahan lokasi yang terjadi, karena dia mempunyai semacam listener class yang bernama LocationListener. Kelas itulah yang akan memantau semua event, seperti perubahan lokasi, provider berubah, dan akan menyesuaikan pendeteksian lokasi sesuai dengan keadaan yang ada.

Mendapatkan Lokasi Pengguna di Android Menggunakan Fused Location API

Apa itu fused location API?

Fused Location API pada dasarnya adalah seperti suatu gateway untuk mengakses lokasi pengguna. Berbeda dengan metode LocationManager sebelumnya yang cukup ribet, Fused Location API mempunyai API yang simple dan mudah digunakan. Selain itu Fused Location API akan secara otomatis mengambil lokasi paling akurat menggunakan cara yang paling efisien. Karena itu dengan menggunakan Fused Location API, kita juga bisa menghemat baterai saat pencarian lokasi karena sifatnya yang low power.

Satu-satunya kerugian dengan menggunakan Fused Location API ini adalah, jika handphone pengguna tidak mempunyai Google Play Services, maka Fused Location API tidak bisa digunakan pada aplikasi yang terinstall di device tersebut. Karena Fused Location API merupakan satu bundle dengan Google Play Services. Namun jangan khawatir karena biasanya handphone-handphone yang tidak mempunyai Play Services adalah smartphone Android buatan china seperti Xiaomi atau Meizu, yang mempunyai versi Android yang sudah dirombak total.

Nilai latitude (posisi horizontal terhadap khatulistiwa) dan longitude (posisi vertikal terhadap prime meridian) dapat dipakai untuk menentukan posisi sebuah lokasi di bumi. Nilai yang dimiliki oleh Location (sekaligus dipakai di Lokasi) berada dalam format yang disebut sebagai Decimal Degrees (DD). Sebagai contoh, nilai latitude berupa 38,8897 derajat sama dengan 38 derajat 53 menit 23 detik utara pada format Degrees, Minutes, and Seconds (DMS). Angka positif pada latitude mewakili utara dan angka negatif mewakili selatan relatif terhadap khatulistiwa. Pada longitude, angka positif mewakili timur dan negatif mewakili barat relatif terhadap prime meridian.

 

 

PROJECT SEDERHANA Google Maps API dan GPS

Persiapan Google API Key

Silahkan buka Google Console, gunakan project yang telah ada tau buat project baru. Ikuti langkah-langkah berikut jika ingin membuat project baru.

  • Silahkan beri nama apa saja untuk project anda. Anda akan mendapat API key, kita akan gunakan ini nanti. Simpan dulu saja dimana.
  • Klik Done jika sudah.

Sampai disini kita telah berhasil mendapatkan API key untuk dapat menggunakan layanan api google 🙂

Mengaktifkan Layanan API

Masih di google console. setelah project berhasil dibuat dan anda telah mendapatkan API key, berikutnya adalah mengaktifkan layanan API untuk project tersebut.

Silahkan Buka https://console.developers.google.com, pilih project yang baru saja kamu buat. Klik “ENABLE APIES AND SERVICES”.

Klik “View All” untuk bagian Maps aktifkan layanan api berikut :

  • Google Maps Android API
  • Google Maps Direction API
  • Google Places API for Android
  • Google Places API Web Services

Well done ! Sampai disini persiapan di Google Console telah selesai 🙂


Let’s DO IT !…….

Persiapan Project

Silahkan buat project android studio baru dengan nama Learn Google APIminimum API 16 : Jelly Bean dan Empty Activity.

Persiapan Libray
Selain library yang saya sebutkan diatas, kita juga akan menggunakan tambahan library Retrofit2 dan Maps Utils, jadi semua library yang akan kita gunakan adalah :

  • Google Maps API
  • Google Place Auto Complete
  • Google Direction API
  • Maps Utils (untuk menggambar garis polyline)
  • Retrofit2 & GsonConverter (untuk komunikasi API)

Silahkan tambahkan depedencies berikut kedalam gradle (app).

dependencies {
    // Google MAPS
    implementation 'com.google.android.gms:play-services-maps:11.8.0'
    // Auto Complete Place & location
    implementation 'com.google.android.gms:play-services-places:11.8.0'
    implementation 'com.google.android.gms:play-services-location:11.8.0'
    // Maps Utils
    compile 'com.google.maps.android:android-maps-utils:0.4+'
    // Retrofit
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'}

Sehingga gradle kalian terlihat seperti berikut :

build.gradle (Module : app)

Jangan lupa klik “Sync Now”.


Android Manifest

Di dalam AndroidManifest.xml kita akan mendefinisikan Permission dan Google API key kita. Berikut permission yang kita gunakan.

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

Dan meta tag untuk api key :

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="YOU_KEY"/>

Sehingga Manifest kita terlihat seperti berikut :

 

 

 

 

 

 

 

Android Activity

Buatlah 2 activity baru :

  • MainActivity
  • DirecActivity

 

Jadi total kita punya 2 Activity disini

 

 

 

 

 

 

Main Activity

Pertama kita atur layout di activity_main.xml seperti berikut :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cari Rute ? Klik tombol dibawah "
        android:layout_marginBottom="10dp"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="20dp"
        android:layout_marginStart="20dp"
        android:textColor="#ffff"
        android:layout_gravity="center"
        android:onClick="openOjek"
        android:background="@drawable/bg_rec"
        android:text="Direction"/>
</LinearLayout>

untuk event on click nya saya menggunakan method disini makanya anda pasti menemui tanda merah di attribut android:onClick. Sekarang kita buat methodnya, buka ActivityMain.java kemudian sesuaikan menjadi seperti berikut :

package com.kelompok3.trian.rps5_10;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

        // Here, thisActivity is the current activity
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {

            // Permission is not granted
            if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                    Manifest.permission.ACCESS_FINE_LOCATION)) {
                Toast.makeText(this, "Membutuhkan Izin Lokasi", Toast.LENGTH_SHORT).show();
            } else {

                // No explanation needed; request the permission
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
                        1);
            }
        } else {
            // Permission has already been granted
            Toast.makeText(this, "Izin Lokasi diberikan", Toast.LENGTH_SHORT).show();
        }
    }

    public void openDirectionMap(View view){
       // startActivity(new Intent(this, DirectionActivity.class));

    }
    public void openOjek(View view){
        startActivity(new Intent(this,Direct.class));
    }
}

Model POJO
Kita akan membuat sebuah POJO sebagai Model penampung response JSON dari Direction API. Kita akan menggunakan bantuan Plugin Robo POJO Generator sama seperti di project sebelumnya Membuat Aplikasi Portal Berita.

Silahkan kunjungi link berikut untuk mendapatkan response json, kemudian silahkan ganti teks yang saya tebalkan dengan API yang tadi kamu telah dapatkan sbelumnya.

https://maps.googleapis.com/maps/api/directions/json?origin=Cirebon,ID&destination=Jakarta,ID&api_key=YOUR_API_KEY

Jika berhasil kalian seharusnya melihat response json seperti ini https://pastebin.com/MgSpHZsE

Agar lebih rapi, silahkan tambahkan package baru dengan nama response.Kemudian generate POJO didalam package tersebut.

Pilih Folder > Klik Kanan > New > Generate POJO from JSON

Berinama Root Object Name dengan ReponseRoute.

 

 

 

 

 

 

 

 

 

Sehingga susunana foldernya terlihat seperti dibawah ini

 

 

 

 

 

 

 

 

Anda akan menemukan error pada setiap Class yang telah terbuat. Cek disemua class hapus 2 baris dibawah ini :

import javax.annotation.Generated;
@Generated(
“com.robohorse.robopojogenerator”)

Request Retrofit
buatlah sebuah package baru dengan nama network, kemudian tambahkan 1 java interface ApiServices.java dan 1 java class InitLibrary.java

ApiServices.java

 

package com.kelompok3.trian.rps5_10.network;

import com.kelompok3.trian.rps5_10.response.ResponseRoute;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;

public interface ApiServices {
    //https://maps.googleapis.com/maps/api/directions/
    // json?origin=Cirebon,ID&destination=Jakarta,ID&api_key=YOUR_API_KEY
    @GET("json")
    Call<ResponseRoute> request_route(
            @Query("origin") String origin,
            @Query("destination") String destination,
            @Query("key") String api_key
    );
}

InitLibrary.java

package com.kelompok3.trian.rps5_10.network;

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class InitLibrary {
    //https://maps.googleapis.com/maps/api/directions/json?origin=Cirebon,ID&destination=Jakarta,ID&api_key=AIzaSyDjkDzp8QfPMPVKqn6gyFY3zflpZUsIFHw
    public static String BASE_URL = "https://maps.googleapis.com/maps/api/directions/";
    public static Retrofit setInit(){
        return new Retrofit.Builder().baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    public static ApiServices getInstance(){
        return setInit().create(ApiServices.class);
    }
}

Baik, sampai disini persiapan Retrofit untuk mengirim request ke Google API telah selesai.

Direc Activity

Finally ! kita hampir sampai di akhir artikel 😀 hehe. Ini adalah activity terakhir Kita.

Layout
Silahkan sesuaikan activity_direc.xml seperti berikut :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".Direct">
    <fragment
        android:id="@+id/place_autocomplete_fragment"
        android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <fragment
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MapsActivity"
        android:layout_below="@+id/place_autocomplete_fragment"/>
</LinearLayout>

Activity
Pada Direc.java sesuaikan kodenya menjadi seperti berikut :

sampai disini kita telah menyelesaikan semua activity. Jika kamu mengikuti tutorial dengan benar aplikasi kamu terlihat seperti berikut ini :


 

 

 

POWER POINT

PMO2_KEL3_RPS5

SOURCE CODE

PROJECT