Program PHP untuk Mencari Jarak Tempuh Antara Dua Alamat


Kesempatan kali ini kita akan belajar tentang cara membuat program mencari atau menghitung jarak tempuh dan waktu tempuh dari dua alamat dengan menggunakan PHP dan Google Maps API Web Services. Google Maps API Web Services ini terdiri dari banyak service yang bisa kita manfaatkan yaitu :

- Directions API
- Distance Matrix API
- Elevation API
- Geocoding API
- Time Zone API

Nah, Service yang akan kita gunakan adalah Google Distance Matrix API. Misalnya kamu mau menghitung atau mencari jarak tempuh dari Jalan Perak Timur Surabaya ke Jalan Wonokromo Surabaya, hasilnya 12,4 KM dengan waktu tempuh kurang 22 menit.



Bagaimana cara membuat program PHP-nya? Ayo kita ikuti langkah-langkah berikut ini:

1. Buat folder baru di htdocs dengan nama distance

2. kita buat halaman depan untuk inputnya, kita simpan dengan nama index.html
<html>
<head>
<title>Hitung Jarak - Google Distance Matrix API</title>
</head>

<body>
<form name="form" action="distance.php" method="post">
<p>
Alamat Asal :<br />
<input type="text" name="asal" required="required" size="40" />
</p>

<p>
Alamat Tujuan :<br />
<input type="text" name="tujuan" required="required" size="40" />
</p>

<input type="submit" name="submit" value="Cari Jarak" />
</form>
</body>
</html>

3. Lalu kita buat program intinya, kita simpan dengan nama distance.php
<?php

$asal   = !empty($_POST['asal']) ? urlencode($_POST['asal']) : null;

$tujuan = !empty($_POST['tujuan']) ? urlencode($_POST['tujuan']) : null;

$urlApi = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=".$asal."&destinations=".$tujuan."&language=id-ID";

$result = file_get_contents($urlApi);

$data   = json_decode($result, true);

?>

<p>
Alamat Asal : <br />
<strong><?php echo $data['origin_addresses'][0] ?></strong>
</p>

<p>
Alamat Tujuan : <br />
<strong><?php echo $data['destination_addresses'][0] ?></strong>
</p>

<p>
Jarak Tempuh : <br />
<strong><?php echo $data['rows'][0]['elements'][0]['distance']['text'] ?></strong>
</p>

<p>
Waktu Tempuh : <br />
<strong><?php echo $data['rows'][0]['elements'][0]['duration']['text'] ?></strong>
</p>

<button onclick="history.back()">Kembali</button>

4. Mari kita coba program ini, pastikan komputer kita terhubung dengan internet. masukkan alamat http://localhost/distance



Masih bingung? mari kita coba dengan demo program berikut ini :

Demo Program atau Download Source Code

Bagaimana sob, mudah bukan? seperti biasa saya tunggu kritik dan sarannya. Salam Blogger Madura

BAGIKAN KE:

21 komentar:

  1. Replies
    1. referensi lengkapnya disini kang :
      https://developers.google.com/maps/documentation/distancematrix/

      Delete
  2. jadi harus masukkan alamat yang sesuai dengan database google mas...??
    kalau nama desa / kelurahan aja bsa ngk mas..??

    ReplyDelete
  3. mas kog muncul error seperti ini, bgmn solusinya :
    [function.file-get-contents]: failed to open stream: No error in C:\xampp\htdocs\distance\distance.php on line 9

    ReplyDelete
    Replies
    1. alamatnya urlnya kurang bener mungkin gan, coba di var_dump

      Delete
  4. kalo nampilin sekalian sama gambar petanya bang, kira2 apa yang ditambah??

    ReplyDelete
  5. mas di xampp php 5.2 kok tidak berfungsi ya ?

    ReplyDelete
  6. bang itu jaraknya sesuai jalur yang ada di maps atau cuma garis lurus antara titik "a" ke titik "b"??

    ReplyDelete
    Replies
    1. pake jalur maps, kalo yg garis lurus beda lagi rumusnya mas bro...

      Delete
  7. bang, mau tanya rumus/atau persamaan untuk pencarian lokasi rute : dari--> ke : jaral terdekat, apa?

    ReplyDelete
  8. gan linknya enggak bisa ... tolong dong

    ReplyDelete
  9. ko yang komplain syntax error ga di respon sih gan? ane juga sama ada peringatan gini : [function.file-get-contents]: failed to open stream: Invalid argument
    padahal udah ane ikutin langkah -langkah dan copas :D

    ReplyDelete
    Replies
    1. coba periksa lagi gan barangkali salah ngedit script :D

      Delete
    2. Sama nech kaya ane...ga jalan di file_get_contents nya...mohon pencerahan...mungkin ada yang di setting di php.ini atau apalah???....

      Delete
  10. kang andi..
    bisa gak kalo alamat tujuan nya diambil dari database? terus ada tampilan petanya? terima kasih

    ReplyDelete
  11. mas kenapa Source Codenya nggak bisa di download..??

    ReplyDelete