From c17ef7d92745429c00d8c29f1fcb61699db3edc8 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Jun 2017 11:49:47 +0100 Subject: [PATCH] Generate geojson in javascript --- app/Http/Controllers/NotesController.php | 41 +++++++++--------------- resources/assets/es6/mapbox-utils.js | 24 ++++++++++++-- resources/views/templates/note.blade.php | 7 ++-- 3 files changed, 42 insertions(+), 30 deletions(-) diff --git a/app/Http/Controllers/NotesController.php b/app/Http/Controllers/NotesController.php index 1242ee81..c91672ee 100644 --- a/app/Http/Controllers/NotesController.php +++ b/app/Http/Controllers/NotesController.php @@ -50,12 +50,6 @@ class NotesController extends Controller $note->longitude = $lnglat[0]; $note->address = $note->place->name; $note->placeLink = '/places/' . $note->place->slug; - $note->geoJson = $this->getGeoJson( - $note->longitude, - $note->latitude, - $note->place->name, - $note->place->icon - ); } /*$mediaLinks = []; foreach ($note->media()->get() as $media) { @@ -157,12 +151,6 @@ class NotesController extends Controller $note->longitude = $lnglat[0]; $note->address = $note->place->name; $note->placeLink = '/places/' . $note->place->slug; - $note->geoJson = $this->getGeoJson( - $note->longitude, - $note->latitude, - $note->place->name, - $note->place->icon - ); } return view('notes.show', compact('note', 'replies', 'reposts', 'likes')); @@ -355,19 +343,20 @@ class NotesController extends Controller { $icon = $icon ?? 'marker'; - return '{ - "type": "FeatureCollection", - "features": [{ - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [' . $longitude . ', ' . $latitude . '] - }, - "properties": { - "title": "' . $title . '", - "icon": "' . $icon . '" - } - }] - }'; + return +"{ + 'type': 'FeatureCollection', + 'features': [{ + 'type': 'Feature', + 'geometry': { + 'type': 'Point', + 'coordinates': [$longitude, $latitude] + }, + 'properties': { + 'title': '$title', + 'icon': '$icon' + } + }] +}"; } } diff --git a/resources/assets/es6/mapbox-utils.js b/resources/assets/es6/mapbox-utils.js index b7340915..012fb090 100644 --- a/resources/assets/es6/mapbox-utils.js +++ b/resources/assets/es6/mapbox-utils.js @@ -55,10 +55,15 @@ const makeMapMenu = (map) => { //the main function export default function addMap(div, position = null, places = null) { + let data; let dataLatitude = div.dataset.latitude; let dataLongitude = div.dataset.longitude; - let data = window['geojson'+div.dataset.id]; - if (data == null) { + let dataName = div.dataset.name; + let dataMarker = div.dataset.marker; + if (dataMarker == '') { + dataMarker = 'circle'; + } + if (dataName == null) { data = { 'type': 'FeatureCollection', 'features': [{ @@ -74,6 +79,21 @@ export default function addMap(div, position = null, places = null) { } }] }; + } else { + data = { + 'type': 'FeatureCollection', + 'features': [{ + 'type': 'Feature', + 'geometry': { + 'type': 'Point', + 'coordinates': [dataLongitude, dataLatitude] + }, + 'properties': { + 'title': dataName, + 'icon': dataMarker, + } + }] + }; } if (places != null) { for (let place of places) { diff --git a/resources/views/templates/note.blade.php b/resources/views/templates/note.blade.php index 5e9d3cb3..9789dd3d 100644 --- a/resources/views/templates/note.blade.php +++ b/resources/views/templates/note.blade.php @@ -27,7 +27,10 @@ @if ($note->placeLink) -
- +
@endif