Selamat siang all, kali ini saya mau berbagi sedikit pengalaman dalam mengintegrasikan Google MAP API SDK dalam Framework Laravel Versi 5...
Selamat siang all, kali ini saya mau berbagi sedikit pengalaman dalam mengintegrasikan Google MAP API SDK dalam Framework Laravel Versi 5.X.
Tapi postingan ini untuk yang sudah mengerti laravel ya.
Pada Postingan ini saya hanya mau berbagi bagaimana menggunakan SDK tersebut untuk menghitung biaya pengiriman. Ya, ibaratnya kayak kang ojek online gitu, tapi disini lebih kearah logistik.
Yuk dimulai.
Backed :
1. Laravel 5.x.
2. Google Map API for PHP bisa di compose dari link : https://github.com/alexpechkarev/google-maps (Ini bukan untuk Laravel tapi untuk PHP global).
3. Klo mau pake JWT untuk optional.
Pertama buat project laravel pada localhost anda. terserah mau buat nama project dan foldernya apa. Setelah selesai, akses dulu untuk memastikan berhasil atau tidaknya. Jika berhasil maka saat diakses ke folder project public akan tampil welcome page ala laravel.
Install plugin vendor laravel menggunakan composer serta link pada point nomor 2 diatas. Setelah selesai, buatlah controller dan route baru pada masing-masing sub folder. app/Http/controller untuk controller dan /route untuk route (bisa gunakan web.php) untuk defaultnya.
Silahkan define route baru dibawah ini :
Route::get('/distance', 'Gmaps@index');
Route::post('calc', 'Gmaps@getCalculate');
pada file web.php. "distance" untuk tampilan awal dan "calc" untuk action form hitungannya. sedangkan Gmaps@ adalah controller yang dipanggil dan @xxxx adalah spesific function yang dipanggil dalam controller tersebut pada saat dipanggil menggunakan link yang telah didefinisikan pada route diatas.
Sekarang buatlah controller dengan nama Gmaps. kenapa ? karena saya harus sesuaikan nama controller nya dengan route diatas. klo saya buat Rhio itukan nama saya.
Jika sudah dibuat controllernya, salin script dibawah ini dan tempel pada controller :
------------------------------------------------------------------------------------------------------------------------
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class Gmaps extends Controller
{
public function index()
{
return view('gmap');
}
public function getCalculate(Request $request)
{
$ori = $request['oriLat'].', '.$request['oriLang'];
$dest = $request['desLat'].', '.$request['desLang'];
$trans = $request['jenisKendaraan'];
$requestor = array('latitude' => $request['oriLat'], 'logitude' => $request['oriLang']);
$requestdes = array('latitude' => $request['desLat'], 'logitude' => $request['desLang']);
$requestData['origin'] = array('latitude' => $request['oriLat'], 'logitude' => $request['oriLang']);
$requestData['destination'] = array('latitude' => $request['desLat'], 'logitude' => $request['desLang']);
$response = \GoogleMaps::load('directions')
->setParam([
'origin' => $ori,
'destination' => $dest,
])
->get();
// echo "</pre>";
$news = json_decode($response);
// print_r((array) $news->routes[0]->legs[0]->distance);
// echo "<br/>";
// print_r((array) $news->routes[0]->legs[0]->duration);
$duration = $news->routes[0]->legs[0]->duration;
$distance = $news->routes[0]->legs[0]->distance;
if ($trans == "MOTOR") {
$type = 'motorcicle';
$distance_per_litre = 25;
$price_per_litre = 6500;
}
if ($trans == "MOBIL") {
$type = 'car';
$distance_per_litre = 12;
$price_per_litre = 6500;
}
if ($trans == "KENDARAAN_UMUM") {
$type = 'TAXI';
$distance_per_litre = 5;
$price_per_litre = 6500;
}
$veh['type'] = $type;
$veh['distance_per_litre'] = $distance_per_litre;
$veh['price_per_litre'] = $price_per_litre;
$cost = ($distance->value / ($distance_per_litre * 1000)) * $price_per_litre;
$resp['requests']= array('origin' => $requestor, 'destination' => $requestdes, 'vehicle' => $veh);
$resp['response']= array('distance' => $distance->text, 'duration' => $duration->text, 'cost' => 'Rp. '.round($cost));
return json_encode($resp);
}
}
------------------------------------------------------------------------------------------------------------------------
Jika sudah, silahkan akses pada browser anda menggunakan link dibawah :
http://localhost/laramap/public/distance
"localhost" adalah nama host atau bisa IP,
"laramap" adalah nama project / folder laravel yang kita buat
Jika agak rada malas bisa diunduh disini.
Semoga bermanfaat.............