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:

20 komentar:

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

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

    BalasHapus
  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

    BalasHapus
    Balasan
    1. alamatnya urlnya kurang bener mungkin gan, coba di var_dump

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

    BalasHapus
  5. ini yang saya cari2.. thx mas broo..

    BalasHapus
  6. mas di xampp php 5.2 kok tidak berfungsi ya ?

    BalasHapus
    Balasan
    1. masak gan? di xampp 5.6 jalan kok gan

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

    BalasHapus
    Balasan
    1. pake jalur maps, kalo yg garis lurus beda lagi rumusnya mas bro...

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

    BalasHapus
  9. gan linknya enggak bisa ... tolong dong

    BalasHapus
    Balasan
    1. bisa kok gan, tinggal download aja..

      Hapus
  10. 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

    BalasHapus
    Balasan
    1. coba periksa lagi gan barangkali salah ngedit script :D

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

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

    BalasHapus
  12. mas kenapa Source Codenya nggak bisa di download..??

    BalasHapus