OpenLayersでは、すべてのオーバーレイの範囲にズームします


10

Openlayersでは、次のようにすべてのレイヤーのバウンディングボックスにズームできます。

map.zoomToExtent();

単一レイヤーの境界ボックスにズームすることもできます。

map.zoomToExtent(layer_name.getDataExtent());

ベースレイヤーを除くすべてのレイヤーの範囲にズームする簡単な方法はありますか?つまり、すべてのオーバーレイの範囲を示しています。

回答:


6
  1. すべてのレイヤーでforループ
    1. ベースレイヤーをスキップする[要件に応じて]
    2. bounds.extend(...)を使用して、すべてを含む境界オブジェクトAPIを構築し ます
  2. 結果の境界APIにズームします

extends()は、引数として渡される境界よりも小さい境界で呼び出された場合にのみ機能するため、これは機能しないと思います。
pakman 2014

OpenLayer API 3.xを使用して同じようにするにはどうすればよいですか
imdadhusen 2015年

@imdadhusenなぜドキュメントを調べないのですか?同じ方法。同じオブジェクト。別の名前空間。 openlayers.org/en/v3.3.0/apidoc/ol.extent.html#extend
Vadim

1

map.restrictedExtentを修正してmap.zoomToExtent (map.restrictedExtent)を呼び出すとどうなりますか?


これで問題が解決します... restrictedExtentを作成するために、オーバーレイの境界ボックスをどのように見つけますか?
Mr_Chimp、2011

ZoomToMaxExtent()を試してみましたか?しかし、ベースレイヤーの範囲が大きくなると、おそらくズームしますか?それが機能しない場合は、各ovelaysレイヤーの範囲を取得し、restrictedExtentを修正するために最大のレイヤーを維持する必要があります。
シモ

ZoomToMaxExtend()を試したところ、ベースレイヤーにズームしました。私はこれを私の質問で述べましたが、再読することは明らかではありません。最大の境界ボックスを維持しても、必ずしも機能するとは限りません。つまり、2つのレイヤーが重なっていない場合です。どういうわけか各レイヤーの境界ボックスを組み合わせて、結果のオブジェクトの境界ボックスを取得する必要があると思います...
Mr_Chimp

それでおしまい!それはそれほど難しいことではありません...しかし、私はあなたに同意します。そのような方法がまだ存在しないことは驚くべきことです(または何かを逃しました;-) ..)
simo

うまくいけば、私たちは何かを逃しました!今は質問を開いたままにしておきます...念のために!
Mr_Chimp、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.