diff --git a/bower.json b/bower.json index a9005096..ce343c79 100644 --- a/bower.json +++ b/bower.json @@ -8,17 +8,17 @@ "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" + "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": [ 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/layer.js b/src/directives/layer.js index 7dbd4168..bb64289a 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 { @@ -59,19 +63,17 @@ 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; } if (!isDefined(properties.visible)) { properties.visible = true; - return; } if (!isDefined(properties.opacity)) { properties.opacity = 1; - return; } var style; @@ -225,7 +227,7 @@ angular.module('openlayers-directive').directive('olLayer', function($log, $q, o } } } - }, true); + }); }); } }; 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; } }