ol.View
Introduction
ol.View 对象表示一个简单的地图2D视图。对改变地图的中心,分辨率和旋转起到作用。
The View States
ol.View是由三个状态决定的;分别为center
,resolution
,rotation
。每一个state都有相应的getter
和setter
方法。例如,center
的getCenter
和setCenter
方法。
ol.view
有一个projection
。这个投影决定了中心坐标系统,并且它的单位决定了分辨率的单位(投影的单位是像素)。默认情况下,投影的单位是是Spherical Mercator (EPSG:3857)
。
The constraints
setCenter
,setResolution
和setRotation
常用来改变视图的状态。任一值都可以传输给setter
方法。并且通过传输给setter
方法的值将会有效成为视图中设置的值,可以通过相应的getter
方法返回其值。
但是ol.view
对象也有分辨率,旋转和中心的约束条件。
综上所述,当setter
方法用来为视图设置新的状态时,没有任何约束。通过明确的运用constrain*
方法(constrainResolution,constrainRotation和constrainCenter)来使约束起作用。
约束的主要用户是Interactions
和controls
。例如,在地图上双击可以改变视图到“另一个”分辨率。在捏缩放之后放开手指可以获取最近的分辨率(动画)。
分辨率约束可以获得特定的分辨率。通常由一下选项决定:resolutions
,maxResoution
,maxZoom
和zoomFactor
。如果设置了resolutions
,其他三个选项将会被忽略。
旋转约束获取特定的角度。通常由一下选项决定:enableRotation
,constrainRotation
。默认情况下,旋转在接近于地平线的时候,其值为0。
中心约束通常由extent
选项决定。默认情况下,中心根本不受限制。
参数讲解
new ol.View
- center
视图初始化中心。中心坐标系统由projection
指定。默认情况下,没有定义。如果没有设置,layer
将会获取不到资源。 - constarinRoration
旋转约束。默认值为true
。false
值表示没有约束,true
值表示有约束。但snap
非常接近于0。一个数字设置旋转的值就是这个数字。例如,4
将旋转设置为0,90,180,270
多个度数。 - enableRotation
启用旋转。默认为true
。如果设置旋转约束为false
,将会设置旋转的值为0。如果enableRotation
设置为false
,constrainRotation
选项没有任何作用。 - extent
限制中心的程度。换句话说,中心不能超过限制值。默认为undefined
。 - maxResolution
分辨率最大值用来确定分辨率的最大约束。通常由minResolution
(或者maxZoom)和zoomFactor
一起使用。如果没有指定,则以投影的有效范围适合256*256图块中来计算。如果投影是Spherical Mercator (默认情况下)
,那么maxResolution
默认为40075016.68557849 / 256 = 156543.03392804097
- minResolution
用来确定分辨率限制的最小分辨率值。通常由minResolution
(或者maxZoom)和zoomFactor
一起使用。如果没有指定,假定为29缩放级别来计算。如果投影是Spherical Mercator (默认情况下)
,那么minResolution
默认为40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253
。 - maxZoom
用来决定分辨率限制的最大缩放级别。通常由minZoom
(或者maxResolution)和zoomFactor
一起使用。默认值为28。注意,如果minResolution
也提供了,则优先maxZoom
。 - minZoom
用来决定分辨率限制的最小缩放级别。通常由maxZoom
(或者minResolution)和zoomFactor
一起使用。默认值为0。注意,如果maxResolution
也提供了,则优先minZoom
。 - projection
投影。默认值为EPSG:3857 (Spherical Mercator)
- resolution
视图初始化时的分辨率。其单位是projection
的单位像素。另一种可供选择的设置其值得方法是设置zoom
。默认是没有定义的。如果zoom
的值没有定义,layer
获取不到资源。 - resolutions
resolutions
决定resolution
的限制。如果设置了maxResolution
。minResolution
,minZoom
,maxZoom
和zoomFactor
选项将会失效。 - rotation
视图初始化时定义旋转。默认值为0。 - zoom
只有当在resolution
没有定义时才能有用。Zoom
级别用来计算视图的厨师分辨率的值。用ol.View#constrainResolution
方法确定。 - zoomFactor
zoom factor
用来确定分辨率限制值。默认值为2。