diff --git a/bower.json b/bower.json index 564b4c8a..b288c075 100644 --- a/bower.json +++ b/bower.json @@ -8,7 +8,7 @@ "openlayers" ], "main": [ - "dist/angular-openlayers-directive.min.js" + "dist/angular-openlayers-directive.js" ], "dependencies": { "angular": "1.4.9", @@ -17,8 +17,8 @@ }, "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/src/directives/center.js b/src/directives/center.js index 914281f6..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); } }); 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/services/olHelpers.js b/src/services/olHelpers.js index b0b78827..de65f99d 100644 --- a/src/services/olHelpers.js +++ b/src/services/olHelpers.js @@ -863,29 +863,17 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $ return false; }, - setCenter: function(view, projection, newCenter, map) { - - if (map && view.getCenter()) { - view.animate({ - duration: 150, - center: view.getCenter() - }); - } + 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) { - view.animate({ - duration: 150, - resolution: map.getView().getResolution(), - zoom: zoom - }); + 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; } }