WebGIS开发绘制地图标注

本文详细介绍了如何使用OpenLayers库在天地图上添加图片标注、文字标注、图文标注,以及PopUp弹窗和聚合标注的步骤,包括所需的关键接口和实例代码。

目录

实现步骤

1. 引用开发库:

2. 创建地图容器:

3. 创建地图对象类:

4. 添加矢量图层:

5. 添加图片标注:

5.1 创建图片标注要素

5.2 设置图片标注要素样式

5.3 将图片标注添加到图层数据源中

6. 添加文字标注:

6.1 创建文字标注要素

6.2 设置文字标注样式

6.3 将文字标注添加到图层数据源中

7. 添加图文标注对象:

7.1 创建图文标注要素

7.2 设置图文标注样式

7.3 添加图文标注到图层数据源中

8. 添加 PopUP:

8.1 获取要转化为 Overlay 的 HTML 元素

8.2 添加关闭按钮的单击事件(隐藏 popup)

8.3 创建 Overlay

8.4 设置 popup 弹窗内容

8.5 为 map 添加点击事件监听,渲染弹出 popup

9. 添加聚合标注:

9.1 创建要素数组

9.2 创建聚合标注数据源

9.3 加载聚合标注数据图层

关键接口

1.【几何要素类】ol.Feature

2.【Overlay 类】ol.Overlay

3.【聚合数据源类】ol.source.Cluster


本文主要介绍如何使用天地图的世界地图添加标注的功能,示例需要使用 【include-openlayers-local.js】 开发库实现。

对于文字,图片,图文标注都是通过ol.Feature()方法构建要素,然后加载到地图中,对于 PopUp 标注则是通过ol.Overlay()方法构建 overlay 弹窗实现。通过ol.source.Cluster()方法创建聚合标注数据源。

实现效果如下图所示:

实现步骤

1. 引用开发库:

本示例通过本地离线 【include-openlayers-local.js】 脚本引入开发库;

2. 创建地图容器:

创建id="mapCon"的 div,并设置其样式;

3. 创建地图对象类:

创建地图对象,设置地图的必要参数;

4. 添加矢量图层:

构建矢量图层(用于存储标注数据),并将图层加入到地图中;

  vectorSource = new ol.source.Vector({
      features: [],
  })
  //矢量标注图层
  vectorLayer = new ol.layer.Vector({
      source: vectorSource,
  })
  map.addLayer(vectorLayer)

5. 添加图片标注:

构建点几何要素,设置其样式为图片标注,并将该点加入到矢量图层中;

5.1 创建图片标注要素

//新建一个要素 ol.Feature
  var newFeature = new ol.Feature({
    //几何信息
    geometry: new ol.geom.Point(coordinate),
  })

5.2 设置图片标注要素样式

 
 function createImageStyle(feature) {
    return new ol.style.Style({
      /**{olx.style.IconOptions}类型*/
      image: new ol.style.Icon({
        anchor: [0.5, 60],
        anchorOrigin: 'top-right',
        anchorXUnits: 'fraction',
        anchorYUnits: 'pixels',
        offsetOrigin: 'top-right',
        // offset:[0,10],
        //图标缩放比例
        // scale:0.5,
        //透明度
        opacity: 0.75,
        //图标的url
        src: './static/assets/olimages/label/blueIcon.png',
      }),
    })
  }
  //设置要素的样式
  newFeature.setStyle(createImageStyle(newFeature))

5.3 将图片标注添加到图层数据源中

  //将新要素添加到数据源中
  vectorSource.addFeature(newFeature)

6. 添加文字标注:

构建点几何要素,设置其样式为文本标注,并将该点加入到矢量图层中;

6.1 创建文字标注要素

  //新建一个要素 ol.Feature
  var newFeature = new ol.Feature({
    //几何信息
    geometry: new ol.geom.Point(coordinate),
    //名称属性
    name: '标注点',
  })

6.2 设置文字标注样式

 function createTxtStyle(feature) {
    return new ol.style.Style({
      text: new ol.style.Text({
        //位置
        textAlign: 'center',
        //基准线
        textBaseline: 'middle',
        //文字样式
        font: 'normal 14px 微软雅黑',
        //文本内容
        text: feature.get('name'),
        //文本填充样式(即文字颜色)
        fill: new ol.style.Fill({ color: '#aa3300' }),
        stroke: new ol.style.Stroke({ color: '#ffcc33', width: 2 }),
      }),
    })
  }
  //设置要素的样式
  newFeature.setStyle(createTxtStyle(newFeature))

                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值