我有一个OpenLayers3地图,包含一个OSM Tile图层和一个或多个Vector图层。我可以使用
将地图缩放为单个图层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块中的代码会给出错误“undefined is not a function”。
根据文档getExtent() returns an extent object和the extent object has an extend method,所以我不确定为什么会出现这种错误。
答案 0 :(得分:3)
在我解决问题时回答了自己的问题。我错误地使用了扩展。正确的代码是:
vector.addEventListener("change", function () {
if (bounds == null) {
bounds = vectorSource.getExtent();
} else {
bounds = ol.extent.extend(bounds, vectorSource.getExtent());
}
map.getView().fitExtent(bounds, map.getSize());
});