【问题标题】:Panning and zooming more than one map at once while interacting with only one map一次平移和缩放多张地图,同时仅与一张地图交互
【发布时间】:2018-07-07 10:58:12
【问题描述】:

我有两个 Openlayers 地图,显示两个不同(无线电)频率的天空区域的两个图像(png 文件)。

我想知道是否可以将在一张地图上平移或缩放的结果复制到另一张地图上,并互惠互利。换句话说,我希望在另一张地图上同时复制一个窗口的一个交互(Pan - Zoom)的效果。

提前谢谢你

【问题讨论】:

    标签: maps openlayers zooming interaction panning


    【解决方案1】:

    是的,您可以通过监听一个 ol.View 的事件并将它们应用到第二个地图上来做到这一点。

    change:resolution 可以捕捉缩放,change:center 可以平移。

    var view = new ol.View({
      center: [0, 0], zoom: 2
    });
    var view2 = new ol.View({
      center: [0, 0], zoom: 2
    });
    var source = new ol.source.OSM();
    
    var map = new ol.Map({
      layers: [
        new ol.layer.Tile({
          source: source
        })
      ],
      target: 'map',
      view: view
    });
    var map2 = new ol.Map({
      layers: [
        new ol.layer.Tile({
          source: new ol.source.OSM()
        })
      ],
      target: 'map2',
      view: view2
    });
    
    function updateView(event, viewRef){
      let newValue = event.target.get(event.key);
    
      if(event.key === 'center') {
        // we need to transform the value, it comes in an other projection
        newValue = ol.proj.transform(newValue , source.getProjection(), 'EPSG:3857');
        // offset the value somehow here
      }
      viewRef.set(event.key, newValue);
    }
    
    view.on('change:resolution', function(event){
      updateView(event, view2);
    });
    
    view.on('change:center', function(event){
      updateView(event, view2);
    });
    .map{
        max-height: 100px;
      }
    <link href="https://openlayers.org/en/v4.6.4/css/ol.css" rel="stylesheet"/>
    <script src="https://openlayers.org/en/v4.6.4/build/ol-debug.js"></script>
    <div id="map" class="map"></div>
    <div id="map2" class="map"></div>

    【讨论】:

    • 亲爱的杜贝。太感谢了。它非常适合我的用例。其实我不需要这样的声明:newValue = ol.proj.transform(newValue, source.getProjection(), 'EPSG:3857');
    • 不错! 我认为这取决于您的底图类型
    猜你喜欢
    • 2017-12-25
    • 2013-04-04
    • 2014-12-23
    • 2016-04-13
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多