2015-05-04 137 views
2

我是Open-layers 3的新用戶。我有我的網頁,圖層OSM由OL3添加,並且我添加了ol的任何矢量圖層(標記) .layer.Vector。當縮放級別改變時,我需要更改矢量圖層。請Openlayers 3:當縮放級別改變時更改向量圖層

+0

我建議最好解釋你想要什麼去做。 「我需要改變矢量圖層」太模糊了。 – erilem

+0

我有兩個文件geojson表示矢量圖層。我喜歡這樣做:如果在第一個文件geojson上放大矢量的縮放級別<12,並且如果大於13,我喜歡張貼第二個文件geojson的矢量。我的願望是類似這個鏈接的演示http://acuriousanimal.com/code/animatedCluster/但它在Openlayers 2 –

回答

1

圖層有setVisible()/ getVisible()方法,因此您可以在特定的縮放級別觸發圖層上的圖層。 Zoom可以在'moveend'事件上派生,然後你可以觸發一個特定的圖層是否可見。

可以從獲得縮放map.getView()。getZoom()(將返回縮放的數字),然後告訴您需要顯示或隱藏的圖層。

圖層保存在一個Collection(array)對象中,可以通過調用map.getLayers()獲得,然後您可以選擇要顯示/隱藏哪一個。當我添加圖層時,我會記錄它們的順序,以便我可以直接得到一個圖層。

map.getLayers()。項(0)將返回我加入到層中的第一層,(1)所述第二等

+0

我感謝你的答案,我能夠通過ol.source.Cluster解決問題。謝謝 –

+1

**警告**,我最近開始使用羣集(請參閱我的其他問題),發現對於大型數據集,它們可能會很慢,所以我現在已經關閉它們。對於小尺寸的數據集,它們應該沒問題。 – pconnell99

+0

非常感謝 –

3

可以甚至直接與創建的矢量層的限定最大和最小分辨率。

類ol.layer.Vector具有選項:

  • minResolution:最小分辨率(含),在該該層將是可見的。
  • maxResolution:最大分辨率(不含),低於該分辨率時,此圖層可見。

如果你不知道一個地圖視圖分辨率可以使用方法map.getView()。getResolution()找出它

+0

我確實嘗試過,但它似乎不起作用。我已發佈[有關此問題](https://gis.stackexchange.com/q/239044/981)。 – awe