Openlayers 3最大エクステント


15

ユーザーがマップ上でパンできる場所を制限したいのですが、OpenLayers 3でマップビューの最大範囲を設定する方法を説明するリソースが見つからないようです。OpenLayers2には解決策がありました。新しいバージョンでは可能ですか?

回答:


18

これはextent、Viewオブジェクトで定義することで簡単に実行できます。例えば

var view = new ol.View({
    ...
    extent: [minx,miny,maxx,maxy]
    ...
});
var map = new ol.Map({
    ...
    view: view,
    ...
});

しかし、中にopenlayers.org/en/v3.0.0/apidoc/ol.View.htmlようなオプションがありません
Daviddd

多くは文書化されていない、または実験とのみ表示安定が確認されていないとき
CJStuart

4
これは実際の範囲ではありません。エクステントをビュー内に保持するだけです。つまり、エクステントの周りにallい空白があります。
ミッチェルイングラム

一方、extent適切な文書化機能となっています:openlayers.org/en/latest/apidoc/module-ol_View-View.html(執筆時点では、「最新の」= V5.3.0)
Christallkeks

3

別のオプションは次のとおりです。

...
var map = new ol.Map({
          layers: [...],
          overlays: [...],
          target: document.getElementById('map'),
          view: new ol.View({
             center: ol.proj.transform([minx,miny,maxx,maxy], 
                     'EPSG:4326', 'EPSG:3857'),
             zoom: ...,    
             maxZoom: ..., 
             minZoom: ..., 
             extent: ol.proj.transform([minx-n,miny-n,maxx+n,maxy+n], 
                     'EPSG:4326', 'EPSG:3857')
             })
        });
...

1

ラグナゴードがすでに指摘したように、を設定する必要extentがありますol.view

参照する最も簡単な方法に応じて、関数を使用して目的の投影(ol.proj.Projection)またはレイヤー(の任意のクラス)から直接範囲を取得します。EPSG:3857の場合、これは機能します。ol.layergetExtent()

var map = new ol.Map({
    ...
    view: new ol.View({
        ...
        extent: ol.proj.get("EPSG:3857").getExtent()
  })
});

1

地図投影法を検討する場合、WGS84と球体メルカトル図法の間には、に代わるものがありol.proj.transformExtentます。ここで答えが見つかりまし。エクステントは次のように割り当てられます。

var map = new ol.Map({
   .
   .
   .
   view: new ol.View({
        extent:  ol.proj.transformExtent([minx, miny, maxx, maxy], 'EPSG:4326', 'EPSG:3857');
         .
         .
         .
        )}
)}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.