BLANTERORBITv102

    Cara Membuat Rute Sederhana Dengan Google Maps

    Kamis, 01 Februari 2018

    Pembuka

    Google maps sudah menyediakan layanan direction yang sangat mudah untuk di implementasikan. Dalam hal ini saya akan memberikan contoh dalam membuat direction dengan google maps api dalam peta Indonesia. Adapun beberapa point yang ada dalam tutorial ini yaitu:
    1. Membuat Rute Sederhana dengan Google Maps.
    2. Menampilkan Deskripsi Rute dengan Google Maps.
    3. Menampilkan Informasi Rute Menggunakan Info Window di Google Maps.
    4. Menampilkan Rute Peta Dari Database.
    5. Menampilkan Rute Alternatif Di Google Maps.

    Pembahasan

    Cara Membuat Rute Sederhana Dengan Google Maps
    Gambar 1
    Buatlah file html kemudian beri nama direction_1 (nama file bebas) kemudian pada file html ketikan kode dibawah.
    <!DOCTYPE html>
    <html>
      <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
        <meta charset="utf-8">
        <title>Java Source Code</title>
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
     <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
     <script async defer src="https://maps.googleapis.com/maps/api/js?key=API_KEY_KAMU&callback=initMap">
        </script>
        <style>
     html { position: relative; height: 100%; }
     body { margin-bottom: 60px; } .footer { position: absolute; bottom: 0; width: 100%; height: 60px; line-height: 60px; background-color: #f5f5f5; } body > .container { padding: 60px 15px 10px; } .footer > .container { padding-right: 15px; padding-left: 15px; } code { font-size: 80%; } #map { margin-top: 20px; width: 100%; height: 400px; } #floating-panel { position: absolute; top: 10px; left: 25%; z-index: 5; background-color: #fff; padding: 5px; border: 1px solid #999; text-align: center; font-family: 'Roboto','sans-serif'; line-height: 30px; padding-left: 10px; }
        </style>
      </head>
      <body>
        <header>
          <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
            <a class="navbar-brand" href="">Cara Membuat Rute Sederhana Dengan Google Maps</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
              <span class="navbar-toggler-icon"></span>
            </button>
          </nav>
        </header>
        <main class="container">
          <div class="row">
           <div class="col-md-12">
           <br>
            <div class="row">
          <label class="col-sm-2 col-form-label">Awal</label>
             <div class="col">
                <select class="form-control" id="start" >
                <option value="Pekanbaru">Pekanbaru</option>
                <option value="Duri Talang Mandi">Duri</option>
                <option value="Dumai">Dumai</option>
                <option value="Lirik Indragiri Hulu">Lirik</option>
                <option value="Pasir Pengaraian">Pasir Pengaraian</option>
                <option value="Pulau Bengkalis">Pulau Bengkalis</option>
              </select>
          </div>
          <label class="col-sm-2 col-form-label">Tujuan</label>
          <div class="col">
              <select class="form-control" id="finish">
                <option value="Pekanbaru">Pekanbaru</option>
                <option value="Duri Talang Mandi">Duri</option>
                <option value="Dumai">Dumai</option>
                <option value="Lirik Indragiri Hulu">Lirik</option>
                <option value="Pasir Pengaraian">Pasir Pegaraian</option>
                <option value="Pulau Bengkalis">Pulau Bengkalis</option>
              </select>
          </div>
          </div>
        <span id="error"></span>
          </div>
         </div>
      
       <div id="map"></div>       
      
        </main>
        <footer class="footer">
          <div class="container">
            <span class="text-muted">www.java-sc.com</span>
          </div>
        </footer>
      </body>
       <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
     <script>
          function initMap() {
            var directionsService = new google.maps.DirectionsService;
            var directionsDisplay = new google.maps.DirectionsRenderer;
            var map = new google.maps.Map(document.getElementById('map'), {
              zoom: 7,
              center: {lat: 0.50404, lng: 102.4579712}
            });
            directionsDisplay.setMap(map);
    
            var onChangeHandler = function() {
              calculateAndDisplayRoute(directionsService, directionsDisplay);
            };
            document.getElementById('start').addEventListener('change', onChangeHandler);
            document.getElementById('finish').addEventListener('change', onChangeHandler);
          }
    
          function calculateAndDisplayRoute(directionsService, directionsDisplay) {
            directionsService.route({
              origin: document.getElementById('start').value,
              destination: document.getElementById('finish').value,
              travelMode: 'DRIVING'
            }, function(response, status) {
              if (status === 'OK') {
                directionsDisplay.setDirections(response);
                $("#error").empty();
                $("#error").removeClass();
              } else {
               $("#error").addClass("badge badge-danger");
                $("#error").text("Tidak dapat menemukan nama lokasi, status error: "+status);
              }
            });
          }
        </script>
    </html>
    Dari kode diatas, saya menggunakan framework bootstrap 4 untuk layout, untuk data yang dicari adalah nama daerah namun dalam hal ini kita harus benar-benar memastikan service google api dapat mengecek nama lokasi. directionService dan directionDisplay merupakan variabel untuk menggunakan service directions google Api. Fungsi calculateAndDisplayRute adalah fungsi untuk menampilkan rute yang dibentuk berdasarkan lokasi yang kita tentukan pada value form select. Kita juga bisa merubah lokasi dari nama ke dalam bentuk LatLang, hanya merubah bagian value pada form select. Sebagai contoh untuk daerah Pekanbaru, <option value="0.5139625,101.3711348">Pekanbaru</option>. 

    Penutup

    Pada postingan ini hanya memberikan kamu contoh sederhana untuk menampilkan rute berdasarkan nama daerah dan koordinat lokasi.

    Terimakasih sudah berkesempatan untuk menimba ilmu dari blog JSC, semoga ilmu yang di share dapat bermanfaat. Jika ada pertanyaan mengenai ilmu yang terkait ataupun tidak, mari kita berdiskusi di dalam kolom komentar ini.

    Keep Learning and Keep Sharing