代码之家  ›  专栏  ›  技术社区  ›  Mike Doe Backs

如何在OpenLays5中最大程度地匹配MAP?

  •  0
  • Mike Doe Backs  · 技术社区  · 6 年前

    我在地图上添加了一些标记:

    const map = new ol.Map({
        target: 'map',
        layers: [
            new Layer.Tile({source: new OSM()}),
            markersVector,
        ],
        view: new ol.View({
            center: [0, 0],
            zoom: 2,
        })
    });
    
    // ...
    
    let setMarkers = function (markers) {
        let features = markers.map((marker) => createFeature(...marker));
        markerSource.addFeatures(features);
    
        // how to fit?
    };
    
    setMarkers(window.markers || []);
    

    在添加了这些功能之后,我希望地图尽可能地缩放,以便所有的标记都可以同时看到。怎么做?以前的版本有 zoomToExtent 显然,现在缺少的方法。

    我试过了,但没用:

    map.getView().fit(
        map.getView().calculateExtent(),
        {constrainResolution: false, padding: [10, 10, 10, 10]}
    );
    

    编辑:

    这个 map.getView().calculateExtent() 在最初和添加功能后返回相同的范围。所以我想我的问题是如何正确计算范围。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Mike Doe Backs    6 年前

    这很简单:

    const markerSource = new source.Vector();
    
    // ...
    
    map.getView().fit(markerSource.getExtent());