2

我有一个由 OSM 平铺层和一个或多个矢量层组成的 OpenLayers3 地图。我可以使用将地图缩放为单个图层

vector.addEventListener("change", function() {
    map.getView().fitExtent(vectorSource.getExtent(), map.getSize());
});

这有效。但是,如果我尝试在添加图层的循环中使用以下内容进行缩放以覆盖多个图层

vector.addEventListener("change", function () {
    if (bounds == null) {
        bounds = vectorSource.getExtent();
    } else {
        bounds = bounds.extend(vectorSource.getExtent());
    }
    map.getView().fitExtent(bounds, map.getSize());
});

在循环外声明边界,然后单层地图继续工作。但是,对于不止一层,else 块中的代码会给出错误“未定义不是函数”。

根据文档getExtent() 返回一个范围对象并且范围对象有一个扩展方法,所以我不确定为什么会出现这个错误。

4

1 回答 1

4

在我解决问题时回答自己的问题。我错误地使用了扩展。正确的代码是:

vector.addEventListener("change", function () {
    if (bounds == null) {
        bounds = vectorSource.getExtent();
    } else {
        bounds = ol.extent.extend(bounds, vectorSource.getExtent());
    }
    map.getView().fitExtent(bounds, map.getSize());
});
于 2014-10-15T11:16:45.390 回答