Menghitung Tarif Berdasarkan Jarak di Google Maps Dengan Python

Pada artikel kali ini saya akan menjelaskan secara ringkas bagaimana cara untuk menghitung tarif berdasarkan jarak di Google Maps dengan Python. Jika pada artikel yang dulu saya menggunakan Javascript, Pada kali ini saya hanya akan memanfaatkan Google Maps API untuk melakukan request saja dan menggunakan respon tersebut untuk menampilkannya di console Python.

Menghitung Tarif Berdasarkan Jarak di Google Maps Dengan Python

# API Credentials

Pertama kita membutuhkan API Key dari salah satu library API yang tersedia di Google Cloud Console yaitu Google Distance Matrix API, pastikan untuk mengaktifkan API ini bersama dengan Google Maps API setelah itu generate API key untuk kita gunakan nanti pada saat melakukan request.

Hitung Tarif Berdasarkan Jarak di Google Maps Dengan Python

Saya asumsikan kamu sudah mendaftar di Google Cloud Console, sudah memiliki API credentials dan mengaktifkan Google Distance Matrix API. Sekarang kita akan lanjut ke bagian script.

# Kode Script

Untuk bagian kode tidak terlalu rumit, module yang akan saya gunakan yaitu requests, json dan locale.

Module request digunakan untuk mengirimkan request  / data ke alamat atau URL tertentu. JSON sangat dibutuhkan untuk mengolah data respon dari request yang kita kirim, sedangkan untuk locale saya gunakan untuk melakukan format angka menjadi sebuah bilangan kurs IDR / Rupiah.

import requests, json, locale
# Set dulu module function & kode locale yang akan kita gunakan
# Saya pilih LC_ALL untuk semua module & kosong untuk set locale secara otomatis
locale.setlocale(locale.LC_ALL, '')

Setelah itu kita buat request untuk menghitung tarifnya, sebagai contoh saya akan menghitung jarak, durasi dan tarif dari Cicadas (Bandung) ke tujuan Sukajadi (Bandung).

Set origins sebagai lokasi awal / asal dan destinations sebagai lokasi tujuan, jangan lupa untuk memasukkan API credentials key yang sudah kamu miliki dari Google Cloud Console.

import requests, json, locale
# Set dulu module function & kode locale yang akan kita gunakan
# Saya pilih LC_ALL untuk semua module & kosong untuk set locale secara otomatis
locale.setlocale(locale.LC_ALL, '')
# base url
url = "https://maps.googleapis.com/maps/api/distancematrix/json"
# parameter query (address = ALAMAT, key= KEY API)
querystring = {"origins":"Cicadas, Bandung","destinations":"Sukajadi, Bandung","key":"API-KEY"}
# kirim request
response = requests.request("GET", url, params=querystring)
# konversi data JSON menjadi List / Array
data = json.loads(response.text)


Nah, hasil respon dari request diatas kita konversikan menjadi sebuah list lalu kita buat variable agar mudah dibaca.

Selain itu kita buat juga rumus untuk menghitung tarifnya, misalkan tarif dasarnya adalah Rp. 1000,- / km berarti setiap kilometernya akan dikalikan dengan Rp. 1000,-. Contoh hasil request di atas adalah sebagai berikut :

Menghitung Tarif Berdasarkan Jarak di Google Maps Dengan Python

Jarak dari Cicadas menuju Sukajadi adalah 8 km atau 8005 meter. Untuk perhitungannya kita akan menggunakan nilai berupa meter tersebut.

origin = data['origin_addresses'][0] 
destination = data['destination_addresses'][0]
distance_text  = data['rows'][0]['elements'][0]['distance']['text']
distance_value = data['rows'][0]['elements'][0]['distance']['value']
duration_text  = data['rows'][0]['elements'][0]['duration']['text']

# konversi meter ke kilometer terlebih dahulu lalu dihitung Rp.1000 / km lalu format ke bentuk kurs IDR
price_value = locale.currency(1000 * (distance_value * 1 / 1000), True,True, True)

Setelah itu kita tinggal menampilkan tarif, durasi dan juga jaraknya di console.

import requests, json, locale
# Set dulu module function & kode locale yang akan kita gunakan
# Saya pilih LC_ALL untuk semua module & kosong untuk set locale secara otomatis
locale.setlocale(locale.LC_ALL, '')
# base url
url = "https://maps.googleapis.com/maps/api/distancematrix/json"
# parameter query (address = ALAMAT, key= KEY API)
querystring = {"origins":"Cicadas, Bandung","destinations":"Sukajadi, Bandung","key":"AIzaSyBDKnOa-NwBajn2Er17rTFu5ftWAZxN6v0"}
# kirim request
response = requests.request("GET", url, params=querystring)
# konversi data JSON menjadi List / Array
data = json.loads(response.text)

origin = data['origin_addresses'][0] 
destination = data['destination_addresses'][0]
distance_text  = data['rows'][0]['elements'][0]['distance']['text']
distance_value = data['rows'][0]['elements'][0]['distance']['value']
duration_text  = data['rows'][0]['elements'][0]['duration']['text']

# konversi meter ke kilometer terlebih dahulu lalu dihitung Rp.1000 / km lalu format ke bentuk kurs IDR
price_value = locale.currency(1000 * (distance_value * 1 / 1000), True,True, True)

# tampilkan hasil
print 'Asal : {}'.format(origin)
print 'Tujuan : {}'.format(destination)
print 'Jarak : {}'.format(distance_text)
print 'Durasi : {}'.format(duration_text)
print 'Tarif : {}'.format(price_value)

Kita jalankan kodenya, maka hasilnya adalah sebagai berikut :

Menghitung Tarif Berdasarkan Jarak di Google Maps Dengan Python

Mudah kan ? Silahkan dicoba dan semoga bermanfaat. 🙂

Tinggalkan komentar