openlayers6【三】 地图视图 View 详解

官方文档:OpenLayers v8.1.0 API - Class: View

上篇文章讲到 ,初始化map地图,必备的三要素之一就是视图(view),这个对象主要是控制地图与人的交互,如进行缩放,调节分辨率、地图的旋转等控制。也就是说每个 map对象包含一个 view对象部分,用于控制与用户的交互。

1. view 属性

center模组:ol / coordinate〜Coordinate

视图的初始中心。如果未设置用户投影,则使用projection选项指定中心的坐标系。如果未设置,则不会获取图层源,但是稍后可以使用设置中心#setCenter

constrainRotation布尔 | 数字 (默认为true)

旋转约束。 false表示没有约束。true表示没有约束,但会在接近零的位置捕捉​​到零。数字将旋转限制为该数量的值。例如,4将旋转限制为0、90、180和270度。

enableRotation布尔值 (默认为true)

启用旋转。如果为false,则使用始终将旋转设置为零的旋转约束。constrainRotation如果enableRotation为,则 该选项无效false

extent模块:ol /范围〜范围

限制视图的范围,换句话说,超出此范围的任何内容都无法在地图上看到。

constrainOnlyCenter布尔值 (默认为false)

如果为true,则范围约束将仅适用于视图中心,而不适用于整个范围。

smoothExtentConstraint布尔值 (默认为true)

如果为true,则范围约束将被平滑应用,即允许视图稍微超出给定范围extent

maxResolution

用于确定分辨率约束的最大分辨率。它与minResolution(或 maxZoom)和一起使用zoomFactor。如果未指定,则以投影的有效范围适合256x256 px瓦片的方式进行计算。如果投影是“球形墨卡托”(默认),则maxResolution默认为40075016.68557849 / 256 = 156543.03392804097

minResolution

用于确定分辨率约束的最小分辨率。它与maxResolution(或 minZoom)和一起使用zoomFactor。如果未指定,则假定使用29个缩放级别(系数为2)进行计算。如果投影是“球形墨卡托”(默认),则minResolution默认为 40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253

maxZoom数字 (默认为28)

用于确定分辨率约束的最大缩放级别。它与minZoom(或 maxResolution)和一起使用zoomFactor。请注意,如果minResolution还提供,则优先于maxZoom

minZoom数字 (默认为0)

用于确定分辨率约束的最小缩放级别。它与maxZoom(或 minResolution)和一起使用zoomFactor。请注意,如果maxResolution还提供,则优先于minZoom

multiWorld布尔值 (默认为false)

如果false视图受到限制,则只能看到一个世界,并且无法平移边缘。如果true地图可能在低缩放级别显示多个世界。仅在projection全局时使用。请注意,如果extent还提供,则它具有优先权。

constrainResolution布尔值 (默认为false)

如果为true,则在交互后,视图将始终设置为最接近的缩放级别。false表示允许中间缩放级别。

smoothResolutionConstraint布尔值 (默认为true)

如果为true,则分辨率最小值/最大值将被平滑应用,即允许视图稍微超过给定的分辨率或缩放范围。

showFullExtent布尔值 (默认为false)

允许缩小视图以显示完整的配置范围。默认情况下,在为视图配置了范围时,用户将无法缩小,因此视口在任一维度上都超出了范围。这意味着如果视口比配置范围的纵横比高或宽,则整个范围可能不可见。如果showFullExtent为true,则用户将能够进行缩小,以使视口超过配置的范围的高度或宽度,但不能同时超过两者,从而可以显示整个范围。

projection模块:ol / proj〜ProjectionLike (默认为'EPSG:3857')

投影。默认值为球形墨卡托。

resolution

视图的初始分辨率。单位是projection每像素的单位(例如米/像素)。设置此方法的替代方法是set zoom。如果既未zoom定义也未定义图层源,则可以稍后使用#setZoom或进行设置#setResolution

resolutions数组。<数字>

确定分辨率约束的分辨率。如果设置了maxResolutionminResolution, minZoommaxZoom,和zoomFactor选项都将被忽略。

rotation数字 (默认为0)

视图的初始旋转(弧度)(顺时针正旋转,0表示北)。

zoom

仅在resolution未定义的情况下使用。缩放级别,用于计算视图的初始分辨率。

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的详解!!! 

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: OpenLayers是一个开源的JavaScript库,可用于创建交互式地图应用程序。它支持地图视图,可以通过整合第方库和API实现。 在OpenLayers中,通过使用Cesium库,可以实现地图的可视化效果。Cesium是一个开源的JavaScript库,用于创建地球维渲染的虚拟环境。OpenLayers与Cesium的整合可以使得用户能够在网页上查看和交互式操作地图。 使用OpenLayers创建地图可以带来很多好处。首先,它可以使得用户能够以维的方式浏览地理数据。通过在地球上添加多个图层和数据源,用户可以深入了解地理信息,并进行数据分析和可视化。其次,OpenLayers地图具有高度的交互性,用户可以通过拖动、缩放和旋转地球来自由探索地理区域。再者,OpenLayers提供了灵活的地图控件和工具,可以帮助用户进行标记、测量、查询等操作,增强了地理数据的分析和应用能力。 OpenLayers地图也广泛应用于各个领域。比如在地理信息系统(GIS)中,地图可以被用来可视化地形、建筑物、水域等地理要素,辅助决策和规划。在旅游服务中,通过将地理信息与地图相结合,可以帮助用户更直观地了解旅游景点的地理位置和周边环境。在教育领域,OpenLayers地图可以用来创建交互式的地理教学资源,提高学生对地球地理的理解和记忆。总之,OpenLayers地图在多个领域中发挥着重要作用,为用户提供了强大的地理数据可视化和分析能力。 ### 回答2: OpenLayers是一个开源的JavaScript库,可以用于创建基于Web的地图应用程序。除了支持常规的二维地图功能外,OpenLayers还提供了对地图的支持。 OpenLayers地图功能主要依赖于Cesium库。Cesium是另一个开源的JavaScript库,专门用于创建高性能的维地球视图。通过将OpenLayers与Cesium结合使用,可以实现在Web应用程序中展示和操作地图。 使用OpenLayers地图功能,可以展示地球的真实形状和地表特征,例如山脉、河流、海洋等。用户可以通过平移、旋转和缩放操作来浏览地球的不同部分。此外,OpenLayers还支持添加自定义的维对象,如建筑物、车辆等,以增强地图的可视化效果。 在使用OpenLayers创建地图应用程序时,开发者可以利用丰富的API来实现各种功能。例如,可以添加地图图层、标记、地理信息系统数据等。同时,OpenLayers还提供了丰富的控件和工具,如缩放控制、导航工具等,以便用户在地图中进行交互操作。 总之,OpenLayers地图功能为开发者提供了创建交互式的、具有真实感的地图应用程序的能力,使用户能够更直观地了解地球的地理信息和地貌特征。 ### 回答3: OpenLayers是一个开源的JavaScript库,用于创建互动的Web地图应用程序。它支持二维和地图,并提供各种功能和工具来实现地图的可视化、交互和分析。 在OpenLayers中,地图可以通过使用合适的WebGL库(如Cesium)来实现。通过将OpenLayers与Cesium集成,我们可以在应用程序中实现地图的可视化和交互。 OpenLayers提供了一些专门为地图设计的类和方法,可以轻松地创建和管理地图。通过使用这些功能,我们可以在Web应用程序中显示具有高程和可视化效果的地图,例如山脉、河流和建筑物。 使用OpenLayers进行地图开发的好处之一是其广泛的功能和工具。OpenLayers提供了丰富的API,可用于在地图添加标记、线条、多边形和其他要素。还可以实现地图的交互功能,如缩放、平移和旋转。 另一个优点是OpenLayers与其他GIS工具和数据格式的兼容性。它支持各种地图服务和数据格式,可以轻松地集成和展示外部数据源。这使得OpenLayers成为一个强大的工具,可以用于开发具有丰富地理信息的复杂地图应用程序。 综上所述,OpenLayers是一个多功能、易于使用且功能强大的JavaScript库,可以用于创建和管理地图。通过结合适当的WebGL库,我们可以轻松地实现具有高程和可视化效果的地图,并使用OpenLayers的丰富功能和工具进行交互和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

范特西是只猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值