From 7534b02d45aea9445b22caf609b82956f21307fe Mon Sep 17 00:00:00 2001 From: Colton Brugger Date: Tue, 25 Apr 2017 10:24:45 -0500 Subject: [PATCH 1/5] fix(layer.js): remove unnecessary returns, to more-gracefully watch layer property changes Resolves #336 --- src/directives/layer.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/directives/layer.js b/src/directives/layer.js index 7dbd4168..3d1efa7f 100644 --- a/src/directives/layer.js +++ b/src/directives/layer.js @@ -66,12 +66,10 @@ angular.module('openlayers-directive').directive('olLayer', function($log, $q, o if (!isDefined(properties.visible)) { properties.visible = true; - return; } if (!isDefined(properties.opacity)) { properties.opacity = 1; - return; } var style; From f9343735d901391f4bd2a13ffb9e161adbc4aecb Mon Sep 17 00:00:00 2001 From: Colton B Brugger Date: Tue, 22 Aug 2017 15:21:27 -0500 Subject: [PATCH 2/5] fix(layer.js): on $destroy, avoid removal of layer that doesn't exist When a layer was not fully instantiated (perhaps due to not being assigned "source" geojson yet), it is still listed as a layer to be destroyed, though the `olLayer` is undefined for it. This update avoids attempts to remove a layer that is undefined. --- src/directives/layer.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/directives/layer.js b/src/directives/layer.js index 3d1efa7f..f2d592dd 100644 --- a/src/directives/layer.js +++ b/src/directives/layer.js @@ -32,6 +32,10 @@ angular.module('openlayers-directive').directive('olLayer', function($log, $q, o var olLayer; scope.$on('$destroy', function() { + if (!isDefined(olLayer)) { + return; + } + if (scope.properties.group) { removeLayerFromGroup(layerCollection, olLayer, scope.properties.group); } else { From 6500160cadf1956bf7e498a5f3b16dd49322d85d Mon Sep 17 00:00:00 2001 From: Colton B Brugger Date: Tue, 22 Aug 2017 15:29:59 -0500 Subject: [PATCH 3/5] feat: support openlayers-v4.* --- bower.json | 4 ++-- package.json | 6 +++--- src/directives/center.js | 10 +++++----- src/directives/view.js | 2 +- src/services/olHelpers.js | 21 ++++----------------- test/unit/controlsSpec.js | 4 ++-- 6 files changed, 17 insertions(+), 30 deletions(-) diff --git a/bower.json b/bower.json index a9005096..98885adf 100644 --- a/bower.json +++ b/bower.json @@ -8,12 +8,12 @@ "openlayers" ], "main": [ - "dist/angular-openlayers-directive.min.js" + "dist/angular-openlayers-directive.js" ], "dependencies": { "angular": "1.4.9", "angular-sanitize": "1.4.9", - "openlayers": "https://github.com/openlayers/ol3/releases/download/v3.16.0/v3.16.0-dist.zip" + "openlayers": "https://github.com/openlayers/openlayers/releases/download/v4.0.0/v4.0.0-dist.zip" }, "devDependencies": { "jquery": "*", diff --git a/package.json b/package.json index 0f7aa16f..6f476bd7 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,7 @@ "license": "MIT", "dependencies": { "angular": "~1.4.8", - "angular-sanitize": "~1.4.8", - "openlayers": "~3.18.1" + "angular-sanitize": "~1.4.8" }, "devDependencies": { "grunt": "~0.4.5", @@ -52,9 +51,10 @@ "karma-script-launcher": "~0.1.0", "load-grunt-config": "^0.17.1", "matchdep": "~0.3.0", - "phantomjs": "^1.9.18", + "phantomjs": "^2.1.3", "protractor": "~2.5.0", "publish-latest": "^1.1.2", + "requirejs": "^2.3.5", "semantic-release": "^4.3.5" }, "scripts": { diff --git a/src/directives/center.js b/src/directives/center.js index cb1964df..de3a6282 100644 --- a/src/directives/center.js +++ b/src/directives/center.js @@ -25,7 +25,7 @@ angular.module('openlayers-directive').directive('olCenter', function($log, $loc if (attrs.olCenter.search('-') !== -1) { $log.error('[AngularJS - Openlayers] The "center" variable can\'t use ' + 'a "-" on his key name: "' + attrs.center + '".'); - setCenter(view, defaults.view.projection, defaults.center, map); + setCenter(view, defaults.view.projection, defaults.center); return; } @@ -53,7 +53,7 @@ angular.module('openlayers-directive').directive('olCenter', function($log, $loc center.zoom = 1; } - setCenter(view, defaults.view.projection, center, map); + setCenter(view, defaults.view.projection, center); view.setZoom(center.zoom); var centerUrlHash; @@ -134,13 +134,13 @@ angular.module('openlayers-directive').directive('olCenter', function($log, $loc var actualCenter = ol.proj.transform(viewCenter, defaults.view.projection, center.projection); if (!(actualCenter[1] === center.lat && actualCenter[0] === center.lon)) { - setCenter(view, defaults.view.projection, center, map); + setCenter(view, defaults.view.projection, center); } } } if (view.getZoom() !== center.zoom) { - setZoom(view, center.zoom, map); + setZoom(view, center.zoom); } }); @@ -179,7 +179,7 @@ angular.module('openlayers-directive').directive('olCenter', function($log, $loc }); olScope.$on('$destroy', function() { - map.unByKey(moveEndEventKey); + ol.Observable.unByKey(moveEndEventKey); }); }); } diff --git a/src/directives/view.js b/src/directives/view.js index c1aa08a2..ed8ab315 100644 --- a/src/directives/view.js +++ b/src/directives/view.js @@ -46,7 +46,7 @@ angular.module('openlayers-directive').directive('olView', function($log, $q, ol }); olScope.$on('$destroy', function() { - map.unByKey(rotationEventKey); + ol.Observable.unByKey(rotationEventKey); }); }); diff --git a/src/services/olHelpers.js b/src/services/olHelpers.js index 45bdd962..6dca44fe 100644 --- a/src/services/olHelpers.js +++ b/src/services/olHelpers.js @@ -833,30 +833,17 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $ return false; }, - setCenter: function(view, projection, newCenter, map) { - - if (map && view.getCenter()) { - var pan = ol.animation.pan({ - duration: 150, - source: (view.getCenter()) - }); - map.beforeRender(pan); - } + setCenter: function(view, projection, newCenter) { + var coord = [newCenter.lon, newCenter.lat]; if (newCenter.projection === projection) { - view.setCenter([newCenter.lon, newCenter.lat]); + view.setCenter(coord); } else { - var coord = [newCenter.lon, newCenter.lat]; view.setCenter(ol.proj.transform(coord, newCenter.projection, projection)); } }, - setZoom: function(view, zoom, map) { - var z = ol.animation.zoom({ - duration: 150, - resolution: map.getView().getResolution() - }); - map.beforeRender(z); + setZoom: function(view, zoom) { view.setZoom(zoom); }, diff --git a/test/unit/controlsSpec.js b/test/unit/controlsSpec.js index 7a3016b7..81c067c4 100644 --- a/test/unit/controlsSpec.js +++ b/test/unit/controlsSpec.js @@ -12,8 +12,8 @@ describe('Directive: openlayers controls', function() { var scope; var containsInstance = function(controls, instance) { - for (var i in controls.array_) { - if (controls.array_[i] instanceof instance) { + for (var i in controls.getArray()) { + if (controls.getArray()[i] instanceof instance) { return true; } } From dc5d127fdb0e6d4b1b7b22488dd7a8bd162d7e68 Mon Sep 17 00:00:00 2001 From: Colton B Brugger Date: Tue, 22 Aug 2017 15:55:30 -0500 Subject: [PATCH 4/5] (bower): update dependencies to latest --- bower.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bower.json b/bower.json index 98885adf..ce343c79 100644 --- a/bower.json +++ b/bower.json @@ -11,14 +11,14 @@ "dist/angular-openlayers-directive.js" ], "dependencies": { - "angular": "1.4.9", - "angular-sanitize": "1.4.9", - "openlayers": "https://github.com/openlayers/openlayers/releases/download/v4.0.0/v4.0.0-dist.zip" + "angular": "1.6.6", + "angular-sanitize": "1.6.6", + "openlayers": "https://github.com/openlayers/openlayers/releases/download/v4.3.1/v4.3.1-dist.zip" }, "devDependencies": { "jquery": "*", - "angular-route": "1.4.9", - "angular-mocks": "1.4.9", + "angular-route": "1.6.6", + "angular-mocks": "1.6.6", "js-polyfills": "^0.1.20" }, "ignore": [ From 8e1fe22d6a0e136dc583396923c2b4d452a753ec Mon Sep 17 00:00:00 2001 From: Colton B Brugger Date: Tue, 10 Oct 2017 23:03:54 -0500 Subject: [PATCH 5/5] feat(layer.js): dramatically improve performance with watchCollection --- src/directives/layer.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/directives/layer.js b/src/directives/layer.js index f2d592dd..bb64289a 100644 --- a/src/directives/layer.js +++ b/src/directives/layer.js @@ -63,7 +63,7 @@ angular.module('openlayers-directive').directive('olLayer', function($log, $q, o return; } - scope.$watch('properties', function(properties, oldProperties) { + scope.$watchCollection('properties', function(properties, oldProperties) { if (!isDefined(properties.source) || !isDefined(properties.source.type)) { return; } @@ -227,7 +227,7 @@ angular.module('openlayers-directive').directive('olLayer', function($log, $q, o } } } - }, true); + }); }); } };