Javascript 在angular openlayers指令中将运行时的maxZoom选项更改为ol.View

Javascript 在angular openlayers指令中将运行时的maxZoom选项更改为ol.View,javascript,angularjs,openlayers-3,angular-openlayers,Javascript,Angularjs,Openlayers 3,Angular Openlayers,我发布了使用openlayers3在运行时更改maxZoom的消息,效果非常好: map.setView(new ol.View({ zoom: 10, maxZoom: 17, minZoom: 10, })); 但是,我正在尝试使用集成此解决方案,地图正在消失。这里有一个。我尝试创建新的指令,但也没有成功 olData.getMap().then(function(map){ map.setView(new ol.View({ zoom: 11, maxZo

我发布了使用openlayers3在运行时更改maxZoom的消息,效果非常好:

map.setView(new ol.View({
  zoom: 10,
  maxZoom: 17,
  minZoom: 10,
}));
但是,我正在尝试使用集成此解决方案,地图正在消失。这里有一个。我尝试创建新的指令,但也没有成功

olData.getMap().then(function(map){
  map.setView(new ol.View({
    zoom: 11,
    maxZoom: 11,
    minZoom: 0,
  }));
});

如果您能在Plunker演示中提供有关如何集成此功能以及是否能使其正常工作的任何建议,那将非常棒。

请参阅
ol.View
对象的文档

如果在创建
ol.View
对象时未给出“中心”选项,则将其视为
未定义的对象。如果其
未定义
,则将不会获取层源。..In
$scope.changeZoom()
方法中心未定义,因为在创建时未提供它。由于此原因,未正确加载贴图对象

修复

olData.getMap().then(function(map){
   map.setView(new ol.View({
      center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
      zoom: 11,
      maxZoom: 11,
      minZoom: 0,
   }));
});
我已经给出了一些随机坐标作为中心。
查看正在运行的plunk代码

我不完全确定它们为什么不一样(我没有调查您所述的普通ol3解决方案),但在逐步查看ol-debug.js代码之后,它似乎画了一个空白框,因为新视图没有中心

可以使用现有视图的中心设置中心:

$scope.changeZoom = function () {
    olData.getMap().then(function (map) {
        newView = new ol.View({
            zoom: 5,
            maxZoom: 20,
            minZoom: 0,
        });
        newView.setCenter(map.getView().getCenter());
        map.setView(newView);
    });
};
这是一个*


*在此之前我没有使用过plunker,所以如果它不起作用,请告诉我,我会再试一次

也许你能在这里找到你需要的