diff options
Diffstat (limited to 'web/app/view/map')
-rw-r--r-- | web/app/view/map/BaseMap.js | 49 | ||||
-rw-r--r-- | web/app/view/map/MapController.js | 12 | ||||
-rw-r--r-- | web/app/view/map/MapMarkerController.js | 26 |
3 files changed, 57 insertions, 30 deletions
diff --git a/web/app/view/map/BaseMap.js b/web/app/view/map/BaseMap.js index c1873161..cac5a596 100644 --- a/web/app/view/map/BaseMap.js +++ b/web/app/view/map/BaseMap.js @@ -117,11 +117,45 @@ Ext.define('Traccar.view.map.BaseMap', { 262144, 131072, 65536, 32768, 16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0.5 ] +<<<<<<< HEAD }), attributions: [ new ol.Attribution({ html: '© <a href="http://map.baidu.com/">Baidu</a>' }) +======= + }) + ] + }) + }); + } else if (type === 'baidu') { + layer = new ol.layer.Tile({ + source: new ol.source.XYZ({ + projection: 'BD-MC', + tileUrlFunction: function (tileCoord) { + var urlsLength = 5, z = tileCoord[0], x = tileCoord[1], y = tileCoord[2], hash, index; + + hash = (x << z) + y; + index = hash % urlsLength; + index = index < 0 ? index + urlsLength : index; + + if (x < 0) { + x = 'M' + -x; + } + if (y < 0) { + y = 'M' + -y; + } + return 'http://online{}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl' + .replace('{}', index).replace('{x}', x).replace('{y}', y).replace('{z}', z); + }, + tileGrid: new ol.tilegrid.TileGrid({ + extent: ol.proj.transformExtent([-180, -74, 180, 74], 'EPSG:4326', 'BD-MC'), + origin: [0, 0], + minZoom: 3, + resolutions: [ + 262144, 131072, 65536, 32768, 16384, 8192, 4096, 2048, + 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0.5 +>>>>>>> e0bb9b92d07176677b3043530660af3bc30774d7 ] }) }); @@ -180,7 +214,7 @@ Ext.define('Traccar.view.map.BaseMap', { } this.map.on('pointermove', function (e) { - var hit = this.forEachFeatureAtPixel(e.pixel, function (feature, layer) { + var hit = this.forEachFeatureAtPixel(e.pixel, function () { return true; }); if (hit) { @@ -191,14 +225,15 @@ Ext.define('Traccar.view.map.BaseMap', { }); this.map.on('click', function (e) { - if (this.map.hasFeatureAtPixel(e.pixel, { + var i, features = this.map.getFeaturesAtPixel(e.pixel, { layerFilter: function (layer) { return !layer.get('name'); } - })) { - this.map.forEachFeatureAtPixel(e.pixel, function (feature, layer) { - this.fireEvent('selectfeature', feature); - }.bind(this)); + }); + if (features) { + for (i = 0; i < features.length; i++) { + this.fireEvent('selectfeature', features[i]); + } } else { this.fireEvent('deselectfeature'); } @@ -215,9 +250,7 @@ Ext.define('Traccar.view.map.BaseMap', { } } }, function () { - proj4.defs('BD-MC', '+proj=merc +lon_0=0 +units=m +ellps=clrk66 +no_defs'); proj4.defs('EPSG:3395', '+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'); ol.proj.get('EPSG:3395').setExtent([-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244]); - }); diff --git a/web/app/view/map/MapController.js b/web/app/view/map/MapController.js index f2a561a3..75796f9b 100644 --- a/web/app/view/map/MapController.js +++ b/web/app/view/map/MapController.js @@ -44,8 +44,8 @@ Ext.define('Traccar.view.map.MapController', { init: function () { this.callParent(); - this.lookupReference('showReportsButton').setVisible(Traccar.app.isMobile() && - !Traccar.app.getAttributePreference('ui.disableReport', false)); + this.lookupReference('showReportsButton').setVisible( + Traccar.app.isMobile() && !Traccar.app.getBooleanAttributePreference('ui.disableReport')); this.lookupReference('showEventsButton').setVisible(Traccar.app.isMobile()); }, @@ -79,10 +79,10 @@ Ext.define('Traccar.view.map.MapController', { this.getView().getGeofencesSource().clear(); if (this.lookupReference('showGeofencesButton').pressed) { Ext.getStore('Geofences').each(function (geofence) { - var feature = new ol.Feature(Traccar.GeofenceConverter - .wktToGeometry(this.getView().getMapView(), geofence.get('area'))); - feature.setStyle(this.getAreaStyle(geofence.get('name'), - geofence.get('attributes') ? geofence.get('attributes').color : null)); + var feature = new ol.Feature( + Traccar.GeofenceConverter.wktToGeometry(this.getView().getMapView(), geofence.get('area'))); + feature.setStyle(this.getAreaStyle( + geofence.get('name'), geofence.get('attributes') ? geofence.get('attributes').color : null)); this.getView().getGeofencesSource().addFeature(feature); return true; }, this); diff --git a/web/app/view/map/MapMarkerController.js b/web/app/view/map/MapMarkerController.js index 09dd83dc..c46faac2 100644 --- a/web/app/view/map/MapMarkerController.js +++ b/web/app/view/map/MapMarkerController.js @@ -216,7 +216,7 @@ Ext.define('Traccar.view.map.MapMarkerController', { projection = mapView.getProjection(); center = ol.proj.fromLonLat([position.get('longitude'), position.get('latitude')]); pointResolution = ol.proj.getPointResolution(projection, mapView.getResolution(), center); - radius = (position.get('accuracy') / ol.proj.METERS_PER_UNIT.m) * mapView.getResolution() / pointResolution; + radius = position.get('accuracy') / ol.proj.METERS_PER_UNIT.m * mapView.getResolution() / pointResolution; if (feature) { feature.getGeometry().setCenter(center); @@ -257,8 +257,8 @@ Ext.define('Traccar.view.map.MapMarkerController', { marker.set('record', device); style = this.getLatestMarker(this.getDeviceColor(device), - position.get('course'), - device.get('category')); + position.get('course'), + device.get('category')); style.getText().setText(device.get('name')); marker.setStyle(style); marker.setId(device.get('id')); @@ -429,10 +429,8 @@ Ext.define('Traccar.view.map.MapMarkerController', { resizeMarker: function (style, zoom) { var image, text; - image = Traccar.DeviceImages.getImageIcon(style.getImage().fill, - zoom, - style.getImage().angle, - style.getImage().category); + image = Traccar.DeviceImages.getImageIcon( + style.getImage().fill, zoom, style.getImage().angle, style.getImage().category); text = style.getText(); text.setOffsetY(-image.getSize()[1] / 2 - Traccar.Style.mapTextOffset); style.setText(text); @@ -440,18 +438,14 @@ Ext.define('Traccar.view.map.MapMarkerController', { }, rotateMarker: function (style, angle) { - style.setImage(Traccar.DeviceImages.getImageIcon(style.getImage().fill, - style.getImage().zoom, - angle, - style.getImage().category)); + style.setImage(Traccar.DeviceImages.getImageIcon( + style.getImage().fill, style.getImage().zoom, angle, style.getImage().category)); }, updateDeviceMarker: function (style, color, category) { var image, text; - image = Traccar.DeviceImages.getImageIcon(color, - style.getImage().zoom, - style.getImage().angle, - category); + image = Traccar.DeviceImages.getImageIcon( + color, style.getImage().zoom, style.getImage().angle, category); text = style.getText(); text.setOffsetY(-image.getSize()[1] / 2 - Traccar.Style.mapTextOffset); style.setText(text); @@ -608,7 +602,7 @@ Ext.define('Traccar.view.map.MapMarkerController', { } }, - filterDevices: function (store) { + filterDevices: function () { Ext.getStore('Devices').each(this.updateDeviceVisibility, this, false); } }); |