Openlayers API整理

本文详细介绍了OpenLayers创建地图的各个方面,包括地图创建、图层管理、视图设置、交互动作、控件以及叠加层的使用。内容涵盖地图属性、图层类型、视图的中心、分辨率和旋转,还涉及了交互中的选择、绘制和修改功能。
摘要由CSDN通过智能技术生成

一、创建地图

1、地图Map

创建地图底图:需要用new ol.Map({})

地图map是由图层layers、一个可视化视图view、用于修改地图内容的交互interaction以及使用UI组件的控件control组成的。

(1)、创建基本地图
let map = new ol.Map({
   
    target: 'map',//对象指向
    layers: [//图层
      new ol.layer.Tile({
   //这里定义的是平铺图层
        source: new ol.source.OSM()//图层源 定义图层映射协议
      })
    ],
    view: new ol.View({
   //视图
      center: ol.proj.fromLonLat([37.41, 8.82]),//地图中心
      zoom: 4//缩放层级
    })
  });
(2)、属性选项
new ol.Map({
   
    target: 'map',//对象映射:要将`map`对象附加到div,` map`对象将`target`作为参数,值是`div`的`id`
    layers: [//图层
      new ol.layer.Tile({
   //这里定义的是平铺图层
        source: new ol.source.OSM()//图层源 定义图层映射协议
      })
    ],
    view: new ol.View({
   //视图
      center: ol.proj.fromLonLat([37.41, 8.82]),//地图中心
      zoom: 4//缩放层级
    }),
    controls:[//最初添加到映射中的控件  如未设置 使用默认控件
        new ol.control.Control({
   
            element:,//元素是控件的容器元素(DOM)。只有在开发自定义控件时才需要指定这一点
            render: ,//控件重新呈现时调用的函数
            target: //如果想在映射的视图端口之外呈现控件,指定目标
        })
    ],
    interactions:[//最初添加到映射中的交互 如未设置 使用默认交互
        new ol.interaction.Interaction({
   
            handleEvent
        })
    ],
    overlays:[
        new ol.Overlay()
    ],
    maxTilesLoading:16,//同时加载的最大瓷砖数 默认16
    loadTilesWhileAnimating:false,//
    loadTilesWhileInteracting:false,//   
    moveTolerance:1,//光标必须移动的最小距离(以像素为单位)才能被检测为map move事件,而不是单击。增加这个值可以使单击地图变得更容易
    pixelRatio:window.devicePixelRatio,//
    keyboardEventTarget:,//要监听键盘事件的元素
})
(3)、地图事件
地图事件 含义
click 无拖动单击
dblclick 无拖动双击
moveend 移动地图结束时
movestart 移动地图开始时
pointerdrag 当拖动指针时触发
pointermove 当指针移动时触发。注意,在触摸设备上,这是在地图平移时触发的,因此与mousemove不同
postcompose
postrender 在映射帧呈现后触发
precompose
propertychange 当属性被更改时触发
rendercomplete 渲染完成时触发,即当前视图的所有源和tile都已加载完毕,所有tile都将淡出
singleclick 一个真正的无拖放和无双击的单击。注意,这个事件被延迟了250毫秒,以确保它不是双击
(4)、地图方法
地图方法 功能
addControl(control) 将给定的控件添加到地图中
removeControl(control) 从地图中移除已给定的控件
addInteraction(interaction) 将给定的交互添加到地图中
removeInteraction(interaction) 从地图中移除已给定的交互
addLayer(layer) 将给定的图层添加到地图的顶部
removeLayer(layer) 从地图中移除已给定的图层
addOverlay(overlay) 将给定的叠加层添加到地图中
removeOverlay(overlay) 从地图中移除已给定的叠加层
forEachFeatureAtPixel(pixel, callback, opt_options) 检测与视图端口上的像素相交的特性,并对每个相交的特性执行回调。检测中包含的层可以通过opt_options中的layerFilter选项配置
forEachLayerAtPixel(pixel, callback, opt_options) 检测在视图端口上的像素处具有颜色值的层,并对每个匹配的层执行回调。检测中包含的层可以通过opt_layerFilter配置
getControls() 获取地图控件
getCoordinateFromPixel(pixel) 获取给定像素的坐标。这将返回地图视图投影中的坐标。
getEventCoordinate(event) 返回浏览器事件的视图投影中的坐标
getEventPixel(event) 返回浏览器事件相对于视图端口的地图像素位置
getFeaturesAtPixel(pixel, opt_options) 获取视图端口上与像素相交的所有特性
getInteractions() 获取地图交互
getLayerGroup() 获取与此地图关联的图层组
setLayerGroup(layerGroup) 设置与此地图关联的图层组
getLayers() 获取与此地图关联的图层的集合
getOverlayById(id) 通过其标识符获取覆盖(overlay. getId()返回的值)。注意,索引将字符串和数字标识符视为相同的。getoverlaybyid(2)将返回id为2或2的叠加层。
getOverlays() 获得地图叠加
getPixelFromCoordinate(coordinate) 获取坐标的像素。它接受地图视图投影中的坐标并返回相应的像素
getSize() 获取地图尺寸
setSize(size) s设置地图尺寸
getTarget() 获取呈现此映射的目标。注意,这将返回作为选项或setTarget中输入的内容。如果这是一个元素,它将返回一个元素;如果是字符串,它会返回这个字符串
setTarget(target) 设置要将地图呈现的目标元素
getTargetElement() 获取呈现此映射的DOM元素。与getTarget相反,这个方法总是返回一个元素,如果映射没有目标,则返回null
getView() 获取地图视图。视图管理中心和分辨率等属性。
setView(view) 设置地图视图
getViewport() 获取作为map视图端口的元素
hasFeatureAtPixel(pixel, opt_options) 检测在viewport上是否与一个像素相交。可以通过opt_layerFilter配置在检测中包含的层。

2、图层Layers

定义图层:地图图层layers:[...]组定义映射中可用的图层组,用来盛放地图上的各种元素,其在地图上的显示顺序是按照数组中元素序列从下到上呈现的,可以直接在创建地图时定义图层,多个图层的时候可以单独定义。

const layer = new ol.layer.Vector({
   //这里定义的是图层类型(Image/Title/Vector)
	source:new ol.source.Vector(),//矢量图层源  源是用于获取映射块的协议【必须】
	style:[],//图层样式 【必须】
	feature:[],//图层元素 【必须】
})
  • 添加指定图层:map.addLayer(layer)
  • 移除指定图层:map.removeLayer(layer)

图层是轻量级容器,从数据源Source获取数据。

Sourced子类分别有,分别对应不同图层类:

  • ol.source.ImageSource()
  • ol.source.TileSource()
  • ol.source.VectorSource()

Source主要有以下属性选项:

new ol.source.VectorSource({
   
    attributions:,//
    attributionsCollapsible:,//布尔值  默认为true 
    projection:,//投影系
    state:'ready',//默认为'ready'
    wrapX:false,//默认为false
})
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值