官方文檔:https://openlayers.org/en/latest/apidoc/module-ol_View-View.html
上篇文章講到 ,初始化map地圖,必備的三要素之一就是視圖(view),這個對象主要是控制地圖與人的交互,如進行縮放,調節分辨率、地圖的旋轉等控制。也就是說每個 map對象包含一個 view對象部分,用於控制與用戶的交互。
1. view 屬性
center |
模組:ol / coordinate〜Coordinate |
視圖的初始中心。如果未設置用戶投影,則使用 |
constrainRotation |
布爾 | 數字 (默認爲true) |
旋轉約束。 |
enableRotation |
布爾值 (默認爲true) |
啓用旋轉。如果爲 |
extent |
模塊:ol /範圍〜範圍 |
限制視圖的範圍,換句話說,超出此範圍的任何內容都無法在地圖上看到。 |
constrainOnlyCenter |
布爾值 (默認爲false) |
如果爲true,則範圍約束將僅適用於視圖中心,而不適用於整個範圍。 |
smoothExtentConstraint |
布爾值 (默認爲true) |
如果爲true,則範圍約束將被平滑應用,即允許視圖稍微超出給定範圍 |
maxResolution |
數 |
用於確定分辨率約束的最大分辨率。它與 |
minResolution |
數 |
用於確定分辨率約束的最小分辨率。它與 |
maxZoom |
數字 (默認爲28) |
用於確定分辨率約束的最大縮放級別。它與 |
minZoom |
數字 (默認爲0) |
用於確定分辨率約束的最小縮放級別。它與 |
multiWorld |
布爾值 (默認爲false) |
如果 |
constrainResolution |
布爾值 (默認爲false) |
如果爲true,則在交互後,視圖將始終設置爲最接近的縮放級別。false表示允許中間縮放級別。 |
smoothResolutionConstraint |
布爾值 (默認爲true) |
如果爲true,則分辨率最小值/最大值將被平滑應用,即允許視圖稍微超過給定的分辨率或縮放範圍。 |
showFullExtent |
布爾值 (默認爲false) |
允許縮小視圖以顯示完整的配置範圍。默認情況下,在爲視圖配置了範圍時,用戶將無法縮小,因此視口在任一維度上都超出了範圍。這意味着如果視口比配置範圍的縱橫比高或寬,則整個範圍可能不可見。如果showFullExtent爲true,則用戶將能夠進行縮小,以使視口超過配置的範圍的高度或寬度,但不能同時超過兩者,從而可以顯示整個範圍。 |
projection |
模塊:ol / proj〜ProjectionLike (默認爲'EPSG:3857') |
投影。默認值爲球形墨卡託。 |
resolution |
數 |
視圖的初始分辨率。單位是 |
resolutions |
數組。<數字> |
確定分辨率約束的分辨率。如果設置了 |
rotation |
數字 (默認爲0) |
視圖的初始旋轉(弧度)(順時針正旋轉,0表示北)。 |
zoom |
數 |
僅在 |
zoomFactor |
數字 (默認爲2) |
縮放係數,用於計算相應的分辨率。 |
1.1 view 常見的幾個屬性
-
center 是一個座標[x, y],表示地圖視圖的中心位置;
-
projection 是地圖的投影座標系統,默認爲'EPSG:3857';
-
zoom 表示地圖初始的縮放級別;
2. view 方法
2.1 view 類的方法主要是針對 view 的屬性的 get 和 set 方法,其基本的方法很多,我們將常用的方法進行歸類:
紅色爲常用的方法
get類:
- getCenter 獲取視圖中心,返回一個地圖中心的座標。
- getZoom 獲取當前的縮放級別。如果視圖不限制分辨率,或者正在進行交互或動畫,則此方法可能返回非整數縮放級別。
- getMaxZoom 獲取視圖的最大縮放級別。
- getMinZoom 獲取視圖的最小縮放級別。
- getAnimating 確定視圖是否處於動畫狀態。
- getInteracting 確定用戶是否正在與視圖進行交互,例如平移或縮放。
- getKeys 獲取對象屬性名稱的列表。
- getMaxResolution 獲取視圖的最大分辨率。
- getMinResolution 獲取視圖的最低分辨率
- getProjection 獲取地圖使用的”投影座標系統”,如EPSG:4326;
- getProperties 獲取具有所有屬性名稱和值的對象。
- getResolution 獲取視圖分辨率。
- getResolutionForExtent 獲取提供的範圍(以地圖單位爲單位)和大小(以像素爲單位)的分辨率。
- getResolutionForZoom 獲取縮放級別的分辨率。
- getResolutions 獲取視圖的分辨率。這將返回傳遞給View的構造函數的分辨率數組,如果未給出則未定義。
- getRevision 獲取此對象的版本號。每次修改對象時,其版本號都會增加。
- getRotation 獲取視圖旋轉。
- getZoomForResolution 獲取分辨率的縮放級別。
set類:
- setCenter 設置當前視圖的中心。任何範圍限制都將適用。
- setConstrainResolution 設置視圖是否應允許中間縮放級別。
- setZoom 縮放到特定的縮放級別。任何分辨率限制都將適用。
- setMaxZoom 爲視圖設置新的最大縮放級別。
- setMinZoom 爲視圖設置新的最小縮放級別。
- setProperties 設置鍵值對的集合。請注意,這會更改所有現有屬性並添加新屬性(不會刪除任何現有屬性)。
- setResolution 設置此視圖的分辨率。任何分辨率約束都將適用。
- setRotation 設置該視圖的旋轉角度。任何旋轉約束都將適用。
2.2 其他類:
- rotate 接受兩個參數,旋轉角度數(rotation)和旋轉中心(opt_anchor,可選),將地圖圍繞 opt_anchor 旋轉 rotation 角度;
- ifDef 檢查地圖的中心和分辨率是否已經設置,都設置返回 true,否則返回 false;
- fitExtent(extent, size),接受兩個參數:extent 和 size,extent 類型是 ol.Extent – [left, bottom, right, top],size由map.getSize()獲取;該功能類似於 ArcGIS 的縮放到圖層功能,將地圖的view 縮放到 extent 區域可見的合適尺度;
- fitGeometry(geometry, size, opt_options),參數是地理要素,地圖尺寸和可選參數;根據給定的地理要素,將 view 縮放到適合地理要素顯示的尺寸;
3. 寫在後面
view主要控制地圖與用戶的最基本的交互,每個 map 對象必須包含一個 view 對象,也就是說每個 map 必須都支持縮放、平移等基本交互動作。
後面會將圖層Layers的詳解!!!