diff options
author | Abyss777 <abyss@fox5.ru> | 2016-11-26 19:23:10 +0700 |
---|---|---|
committer | Abyss777 <abyss@fox5.ru> | 2016-11-26 19:23:10 +0700 |
commit | eb8d6f28ec5b764043b99cdadfd60a51a79423a8 (patch) | |
tree | 308b3fdcd9c2f0dbdcb04178d790c4d04066a40f /web/app | |
parent | 8004b238b4513b7be4684f7dbae3e03548856ca7 (diff) | |
download | trackermap-web-eb8d6f28ec5b764043b99cdadfd60a51a79423a8.tar.gz trackermap-web-eb8d6f28ec5b764043b99cdadfd60a51a79423a8.tar.bz2 trackermap-web-eb8d6f28ec5b764043b99cdadfd60a51a79423a8.zip |
Implement polyline geofences
Diffstat (limited to 'web/app')
-rw-r--r-- | web/app/GeofenceConverter.js | 22 | ||||
-rw-r--r-- | web/app/store/GeofenceTypes.js | 3 |
2 files changed, 25 insertions, 0 deletions
diff --git a/web/app/GeofenceConverter.js b/web/app/GeofenceConverter.js index f0e28b3f..9e3c1327 100644 --- a/web/app/GeofenceConverter.js +++ b/web/app/GeofenceConverter.js @@ -49,6 +49,20 @@ Ext.define('Traccar.GeofenceConverter', { geometry = new ol.geom.Circle(center, radius); } } + } else if (wkt.lastIndexOf('LINESTRING', 0) === 0) { + content = wkt.match(/\([^\(\)]+\)/); + if (content !== null) { + coordinates = content[0].match(/-?\d+\.?\d*/g); + if (coordinates !== null) { + projection = mapView.getProjection(); + for (i = 0; i < coordinates.length; i += 2) { + lat = Number(coordinates[i]); + lon = Number(coordinates[i + 1]); + points.push(ol.proj.transform([lon, lat], 'EPSG:4326', projection)); + } + geometry = new ol.geom.LineString(points); + } + } } return geometry; }, @@ -74,6 +88,14 @@ Ext.define('Traccar.GeofenceConverter', { result += points[0][i][1] + ' ' + points[0][i][0] + ', '; } result = result.substring(0, result.length - 2) + '))'; + } else if (geometry instanceof ol.geom.LineString) { + geometry.transform(projection, 'EPSG:4326'); + points = geometry.getCoordinates(); + result = 'LINESTRING ('; + for (i = 0; i < points.length; i += 1) { + result += points[i][1] + ' ' + points[i][0] + ', '; + } + result = result.substring(0, result.length - 2) + ')'; } return result; } diff --git a/web/app/store/GeofenceTypes.js b/web/app/store/GeofenceTypes.js index c102de69..45b79897 100644 --- a/web/app/store/GeofenceTypes.js +++ b/web/app/store/GeofenceTypes.js @@ -25,5 +25,8 @@ Ext.define('Traccar.store.GeofenceTypes', { }, { key: 'Circle', name: Strings.mapShapeCircle + }, { + key: 'LineString', + name: Strings.mapShapePolyline }] }); |