簡體   English   中英

縮放OpenLayers3地圖以覆蓋多個矢量圖層

[英]Zooming an OpenLayers3 map to cover multiple vector layers

我有一個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()返回一個extent對象而extent對象有一個extend方法 ,所以我不確定為什么會出現這個錯誤。

在我解決問題時回答了自己的問題。 我錯誤地使用了擴展。 正確的代碼是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM