Jumat, 15 Maret 2013

Membuat Rute pada Web Peta Google Map, Draggable Directions GoogleMap

Kemarin penulis mendapat script yang sangat menarik untuk Membuat Web Peta Google Map yang memiliki Fitur Rute (Directions) dengan titik awal dan titik akhir yang dapat diatur dan dapat di drag (digeser dengan mouse) atau istilahnya draggable.

Yang cukup mengagumkan ternyata jalan terdekat (rute directions) nya pun dapat didrag pada simpul-simpul jalannya sehingga dapat membuat alternatif jalan yang lain yang melewati titik yang telah kita tentukan.

Scriptnya sebagai berikut :



<script type="text/javascript" src="http://maps.google.com/maps/api/js?

sensor=false"></script>
<script type="text/javascript">
  var directionsDisplay;
  var directionsService = new google.maps.DirectionsService();
  var map;
  var oldDirections = [];
  var currentDirections = null;

  function initialize() {
    var myOptions = {
      zoom: 12,
      center: new google.maps.LatLng(-7.805155310233364,110.36424198305053),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas3"), 

myOptions);

    directionsDisplay = new google.maps.DirectionsRenderer({
        'map': map,
        'preserveViewport': true,
        'draggable': true
    });
    directionsDisplay.setPanel(document.getElementById("directions_panel"));

    google.maps.event.addListener(directionsDisplay, 'directions_changed',
      function() {
        if (currentDirections) {
          oldDirections.push(currentDirections);
          setUndoDisabled(false);
        }
        currentDirections = directionsDisplay.getDirections();
      });

    setUndoDisabled(true);

    calcRoute();
  }

  function calcRoute() {
    var start = 'Kraton Yogyakarta, Yogyakarta';
    var end = '-7.782726399860902,110.40125352935797';
    var request = {
        origin:start,
        destination:end,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);
      }
    });
  }

  function undo() {
    currentDirections = null;
    directionsDisplay.setDirections(oldDirections.pop());
    if (!oldDirections.length) {
      setUndoDisabled(true);
    }
  }

  function setUndoDisabled(value) {
    document.getElementById("undo").disabled = value;
  }

  google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map_canvas3" style="float:left;width:300px;height:300px"></div>
<div style="float:right;width:30%;height:100%;overflow:auto">
  <button id="undo" style="display:block;margin:auto" onclick="undo()">Undo
  </button>
  <div id="directions_panel" style="width:200"></div>
</div>

Copy paste code di atas, kemudian save sebagai file *.html, kemudian jalankan di browser.

Semoga bermanfaat.

4 komentar:

  1. Ada sedikit kesalahan pada script di atas, pada bagian :

    <div id="map_canvas3" style="float:left;width:300;height:300"></div>

    Sudah penulis betulkan menjadi :

    <div id="map_canvas3" style="float:left;width:300px;height:300px"></div>

    Mohon diperiksa yang sudah menjalankan script ini sebelumnya, supaya dapat tampil dan tidak terjadi kesalahan.

    BalasHapus
    Balasan
    1. kalo direct yang tujuan akhirnya ditentuin dari data base yang udah kesimpen biar nentuin seendiri gitu gimana om,,????

      Hapus
  2. Supaya bisa di gunakan untuk route kota diluar jawa misalnya di samarinda kalimantan timur bagaimana ya ?

    BalasHapus
  3. kalo direct yang tujuan akhirnya ditentuin dari data base yang udah kesimpen biar nentuin seendiri gitu gimana om,,????

    BalasHapus