diff --git a/app/javascript/controllers/maps_controller.js b/app/javascript/controllers/maps_controller.js
index 99413083..44044af0 100644
--- a/app/javascript/controllers/maps_controller.js
+++ b/app/javascript/controllers/maps_controller.js
@@ -10,55 +10,27 @@ export default class extends Controller {
var markers = JSON.parse(this.element.dataset.coordinates)
var center = markers[markers.length - 1] || JSON.parse(this.element.dataset.center)
var center = (center === undefined) ? [52.516667, 13.383333] : center;
- var osm = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
- maxZoom: 19,
- attribution: '© OpenStreetMap'
- });
-
- var osmHOT = L.tileLayer('https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', {
- maxZoom: 19,
- attribution: '© OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France'
- });
-
- var baseMaps = {
- "OpenStreetMap": osm,
- "OpenStreetMap.HOT": osmHOT
- };
var map = L.map(this.containerTarget, {
- layers: [osm, osmHOT]
+ layers: [this.osmMapLayer(), this.osmHotMapLayer()]
}).setView([center[0], center[1]], 14);
-
- var markersArray = []
-
- for (var i = 0; i < markers.length; i++) {
- var lat = markers[i][0];
- var lon = markers[i][1];
-
- var popupContent = this.popupContent(markers[i]);
- var circleMarker = L.circleMarker([lat, lon], {radius: 4})
-
- markersArray.push(circleMarker.bindPopup(popupContent).openPopup())
- }
-
+ var markersArray = this.markersArray(markers)
var markersLayer = L.layerGroup(markersArray)
- markersLayer.addTo(map);
var polylineCoordinates = markers.map(element => element.slice(0, 2));
var polylineLayer = L.polyline(polylineCoordinates)
- polylineLayer.addTo(map);
var controlsLayer = {
"Points": markersLayer,
"Polyline": polylineLayer
}
- var layerControl = L.control.layers(baseMaps, controlsLayer).addTo(map);
+ var layerControl = L.control.layers(this.baseMaps(), controlsLayer).addTo(map);
this.addTileLayer(map);
- // var markersLayer = this.addMarkers(map, markers);
- // this.addPolyline(map, markers);
+ markersLayer.addTo(map);
+ polylineLayer.addTo(map);
this.addLastMarker(map, markers);
}
@@ -66,6 +38,50 @@ export default class extends Controller {
this.map.remove();
}
+ osmMapLayer() {
+ return L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
+ maxZoom: 19,
+ attribution: '© OpenStreetMap'
+ })
+ }
+
+ osmHotMapLayer() {
+ return L.tileLayer('https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', {
+ maxZoom: 19,
+ attribution: '© OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France'
+ })
+ }
+
+ baseMaps() {
+ return {
+ "OpenStreetMap": this.osmMapLayer(),
+ "OpenStreetMap.HOT": this.osmHotMapLayer()
+ }
+ }
+
+ controlsLayer() {
+ return {
+ "Points": this.markersLayer,
+ "Polyline": this.polylineLayer
+ }
+ }
+
+ markersArray(markers_data) {
+ var markersArray = []
+
+ for (var i = 0; i < markers_data.length; i++) {
+ var lat = markers_data[i][0];
+ var lon = markers_data[i][1];
+
+ var popupContent = this.popupContent(markers_data[i]);
+ var circleMarker = L.circleMarker([lat, lon], {radius: 4})
+
+ markersArray.push(circleMarker.bindPopup(popupContent).openPopup())
+ }
+
+ return markersArray
+ }
+
popupContent(marker) {
return `
Timestamp: ${this.formatDate(marker[4])}