From d46b0f3d8be30f6003bc49d4484cf2c9883fc30d Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Thu, 13 Dec 2018 22:53:25 +0800 Subject: [PATCH] Add interactive map on outlet markers/locations --- app/Http/Controllers/Api/OutletController.php | 25 +++++++++++ app/Http/Controllers/OutletMapController.php | 13 ++++++ resources/views/layouts/app.blade.php | 1 + resources/views/outlets/map.blade.php | 61 +++++++++++++++++++++++++++ routes/api.php | 1 + routes/web.php | 1 + 6 files changed, 102 insertions(+) create mode 100644 app/Http/Controllers/OutletMapController.php create mode 100644 resources/views/outlets/map.blade.php diff --git a/app/Http/Controllers/Api/OutletController.php b/app/Http/Controllers/Api/OutletController.php index 5409e6c..9c3d04d 100644 --- a/app/Http/Controllers/Api/OutletController.php +++ b/app/Http/Controllers/Api/OutletController.php @@ -6,6 +6,7 @@ use App\Outlet; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Http\Resources\OutletCollection; +use App\Http\Resources\Outlet as OutletResource; class OutletController extends Controller { @@ -15,4 +16,28 @@ class OutletController extends Controller return new OutletCollection($outlets); } + + public function geoJSON(Request $request) + { + $outlets = Outlet::all(); + + $geoJSONdata = $outlets->map(function ($outlet) { + return [ + 'type' => 'Feature', + 'properties' => new OutletResource($outlet), + 'geometry' => [ + 'type' => 'Point', + 'coordinates' => [ + $outlet->longitude, + $outlet->latitude, + ], + ], + ]; + }); + + return response()->json([ + 'type' => 'FeatureCollection', + 'features' => $geoJSONdata, + ]); + } } diff --git a/app/Http/Controllers/OutletMapController.php b/app/Http/Controllers/OutletMapController.php new file mode 100644 index 0000000..e162087 --- /dev/null +++ b/app/Http/Controllers/OutletMapController.php @@ -0,0 +1,13 @@ +