diff options
author | Abyss777 <abyss@fox5.ru> | 2017-03-15 09:38:12 +0500 |
---|---|---|
committer | Abyss777 <abyss@fox5.ru> | 2017-03-15 09:38:12 +0500 |
commit | b93d36f154d6e5b16769ddec07bb8936512f8bb1 (patch) | |
tree | dc62fa48dd2e8df692aa56a6ee626693ef0ceee6 /web/app/view/MapController.js | |
parent | d77cc1c9b2890224119d59b493597e47e3f1792f (diff) | |
download | trackermap-web-b93d36f154d6e5b16769ddec07bb8936512f8bb1.tar.gz trackermap-web-b93d36f154d6e5b16769ddec07bb8936512f8bb1.tar.bz2 trackermap-web-b93d36f154d6e5b16769ddec07bb8936512f8bb1.zip |
Zoom to all devices on launch
Diffstat (limited to 'web/app/view/MapController.js')
-rw-r--r-- | web/app/view/MapController.js | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/web/app/view/MapController.js b/web/app/view/MapController.js index 95296f14..1a2a9c13 100644 --- a/web/app/view/MapController.js +++ b/web/app/view/MapController.js @@ -28,7 +28,8 @@ Ext.define('Traccar.view.MapController', { controller: { '*': { mapstaterequest: 'getMapState', - togglestaterequest: 'getToggleState' + togglestaterequest: 'getToggleState', + zoomtoalldevices: 'zoomToAllDevices' } }, store: { @@ -98,5 +99,30 @@ Ext.define('Traccar.view.MapController', { return true; }, this); } + }, + + zoomToAllDevices: function () { + var data, i, point, minx, miny, maxx, maxy; + data = Ext.getStore('LatestPositions').getData(); + for (i = 0; i < data.items.length; i++) { + point = ol.proj.fromLonLat([ + data.items[i].get('longitude'), + data.items[i].get('latitude') + ]); + if (i === 0) { + minx = maxx = point[0]; + miny = maxy = point[1]; + } else { + minx = Math.min(point[0], minx); + miny = Math.min(point[1], miny); + maxx = Math.max(point[0], maxx); + maxy = Math.max(point[1], maxy); + } + } + if (minx !== maxx || miny !== maxy) { + this.getView().getMapView().fit([minx, miny, maxx, maxy]); + } else if (point) { + this.getView().getMapView().fit(new ol.geom.Point(point)); + } } }); |