From 563f7b191379a26254541a0ffc4e20f23e7df3ec Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Fri, 30 Dec 2016 18:43:53 +0500 Subject: - Always highlight selected marker - Do not show markers by default --- web/app/view/MapMarkerController.js | 49 ++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 14 deletions(-) (limited to 'web/app/view/MapMarkerController.js') diff --git a/web/app/view/MapMarkerController.js b/web/app/view/MapMarkerController.js index 0a87b5d..b014700 100644 --- a/web/app/view/MapMarkerController.js +++ b/web/app/view/MapMarkerController.js @@ -222,8 +222,22 @@ Ext.define('Traccar.view.MapMarkerController', { } }, + addReportMarker: function (position) { + var geometry, marker, style, point = ol.proj.fromLonLat([ + position.get('longitude'), + position.get('latitude') + ]); + geometry = new ol.geom.Point(point); + marker = new ol.Feature(geometry); + marker.set('record', position); + style = this.getReportMarker(position.get('deviceId'), position.get('course')); + marker.setStyle(style); + this.reportMarkers[position.get('id')] = marker; + this.getView().getMarkersSource().addFeature(marker); + }, + addReportMarkers: function (store, data) { - var i, position, point, geometry, marker, style, minx, miny, maxx, maxy; + var i, position, point, minx, miny, maxx, maxy; this.clearReport(); for (i = 0; i < data.length; i++) { position = data[i]; @@ -240,20 +254,14 @@ Ext.define('Traccar.view.MapMarkerController', { maxx = Math.max(point[0], maxx); maxy = Math.max(point[1], maxy); } - if (store.showMarkers !== false) { - geometry = new ol.geom.Point(point); - marker = new ol.Feature(geometry); - marker.set('record', position); - style = this.getReportMarker(position.get('deviceId'), position.get('course')); - marker.setStyle(style); - this.reportMarkers[position.get('id')] = marker; - this.getView().getMarkersSource().addFeature(marker); + if (store.showMarkers) { + this.addReportMarker(position); } } if (minx !== maxx || miny !== maxy) { this.getView().getMapView().fit([minx, miny, maxx, maxy], this.getView().getMap().getSize()); - } else if (geometry) { - this.getView().getMapView().fit(geometry, this.getView().getMap().getSize()); + } else if (point) { + this.getView().getMapView().fit(new ol.geom.Point(point), this.getView().getMap().getSize()); } }, @@ -275,6 +283,10 @@ Ext.define('Traccar.view.MapMarkerController', { } this.reportMarkers = {}; } + + if (this.selectedMarker && this.selectedMarker.get('record') instanceof Traccar.model.Position) { + this.selectedMarker = null; + } }, getRouteStyle: function (deviceId) { @@ -346,9 +358,15 @@ Ext.define('Traccar.view.MapMarkerController', { selectMarker: function (marker, center) { if (this.selectedMarker) { - this.resizeMarker(this.selectedMarker.getStyle(), false); - this.selectedMarker.getStyle().setZIndex(0); - this.selectedMarker.changed(); + if (!Ext.getStore('ReportRoute').showMarkers && + this.selectedMarker.get('record') instanceof Traccar.model.Position) { + this.getView().getMarkersSource().removeFeature(this.selectedMarker); + delete this.reportMarkers[this.selectedMarker.get('record').get('id')]; + } else { + this.resizeMarker(this.selectedMarker.getStyle(), false); + this.selectedMarker.getStyle().setZIndex(0); + this.selectedMarker.changed(); + } } if (marker) { @@ -369,6 +387,9 @@ Ext.define('Traccar.view.MapMarkerController', { selectReport: function (position, center) { if (position instanceof Traccar.model.Position) { + if (!Ext.getStore('ReportRoute').showMarkers) { + this.addReportMarker(position); + } this.selectMarker(this.reportMarkers[position.get('id')], center); } }, -- cgit v1.2.3