OpenLayer实现自定义坐标点的绘制

 更新时间:2022年04月20日 14:37:22   作者:秦浩铖  
OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问。本文将利用OpenLayer实现自定义坐标点的绘制,感兴趣的可以了解一下

实现步骤

引入相应的库

  import 'ol/ol.css';
  import Map from 'ol/Map';
  import OSM from 'ol/source/OSM';
  import TileLayer from 'ol/layer/Tile';
  import View from 'ol/View';
  import Projection from 'ol/proj/Projection';
  import ImageLayer from 'ol/layer/Image'
  import Static from 'ol/source/ImageStatic'
  import { getCenter } from 'ol/extent'
  import Feature from 'ol/Feature'
  import VectorSource from 'ol/source/Vector'
  import { Circle as CircleStyle, Style, Fill, Stroke } from 'ol/style'
  import { Heatmap as HeatmapLayer } from "ol/layer";
  import VectorLyr from 'ol/layer/Vector'
  import { Overlay } from 'ol'
  import { Polygon, Point } from "ol/geom";
  import { fromLonLat } from "ol/proj";
  import Modify from 'ol/interaction/Modify';
  import Draw from 'ol/interaction/Draw';
  import Snap from 'ol/interaction/Snap';
  import MousePosition from 'ol/control/MousePosition'
  import * as olCoordinate from 'ol/coordinate'
  import FullScreen from 'ol/control/FullScreen'
  import Text from 'ol/style/Text'

绘制自定义图标

	  // 添加标签
      addTag() {
        let src = require('../../../assets/ceshi.png')
        var element = document.createElement('div')
        element.className = 'point_icon'
        var p = document.createElement('p')
        var img = document.createElement('img')
        img.setAttribute('id', '123')
        var div = document.createElement('div')
        element.appendChild(p)
        element.appendChild(img)
        element.appendChild(div)
        // debugger
        img.style.width = '25px'
        img.style.height = '25px'
        img.src = src
        div.style.marginTop = '0px'
        div.innerText = '123'
        div.style.fontWeight = 'bold'
        div.style.fontSize = '12px'
        var pointOverlay = new Overlay({
          id: '123',
          stopEvent: false,
          element: element,
          positioning: 'center-center'
        })
        this.map.addOverlay(pointOverlay)
        // debugger
        pointOverlay.setPosition([50, 30])
      },

获取当前地图所有图层

let overlays = this.map.getOverlays()

判断重新绘制图标位置

	setPosition() {
        let overlays = this.map.getOverlays()
        if (overlays.array_ && overlays.array_.length > 0) {
          for (let i = 0; i < overlays.array_.length; i++) {
            if (overlays.array_[i].element.children[0].children[1] !== undefined) {
              let name = overlays.array_[i].element.children[0].children[1].attributes['id'].value
              if (name=== '123') {
                haveOverlay = true
                overlays.array_[i].setPosition([116, 67])
              }
            }
          }
        }
      },

效果展示

到此这篇关于OpenLayer实现自定义坐标点的绘制的文章就介绍到这了,更多相关OpenLayer自定义坐标点内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS闭包、作用域链、垃圾回收、内存泄露相关知识小结

    JS闭包、作用域链、垃圾回收、内存泄露相关知识小结

    闭包是指有权访问另一个函数作用域中变量的函数。接下来通过本文给大家介绍JS闭包作用域链等相关知识小结(垃圾回收内存泄露)的相关知识,感兴趣的朋友一起学习吧
    2016-05-05
  • 基于Leaflet的Webgis经纬网格功能实现

    基于Leaflet的Webgis经纬网格功能实现

    本文将介绍一款Leaflet的经纬网插件,基于这款经纬网插件,详细介绍如何实现经纬网功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2023-12-12
  • js 判断数据类型的几种方法

    js 判断数据类型的几种方法

    本文主要介绍了Js中数据类型判断的几种方法。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • js类 from qq

    js类 from qq

    js类 from qq...
    2006-11-11
  • js基于canvas实现时钟组件

    js基于canvas实现时钟组件

    这篇文章主要介绍了js基于canvas实现时钟组件的方法,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下
    2021-02-02
  • 找到一点可怜的关于dojo资料,谢谢作者!

    找到一点可怜的关于dojo资料,谢谢作者!

    找到一点可怜的关于dojo资料,谢谢作者!...
    2006-12-12
  • javascript实现label标签跳出循环操作

    javascript实现label标签跳出循环操作

    这篇文章主要为大家详细介绍了javascript实现label标签跳出循环操作,感兴趣的朋友可以参考一下
    2016-03-03
  • JavaScript实现加密与解密详解

    JavaScript实现加密与解密详解

    这篇文章介绍了JavaScript实现加密与解密详解的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • JavaScript加载速度优化方法

    JavaScript加载速度优化方法

    通过使用CDN、压缩、异步加载、尽可能的减少JavaScript文件大小、利用缓存机制、使用Vanilla JS、使用ES6特性、将JavaScript文件放到底部、减少对DOM的访问以及避免重复代码等方法,可以优化JavaScript文件的加载和执行速度,提供更好的用户体验和更高的性能
    2023-08-08
  • ie和firefox不兼容的解决方法集合

    ie和firefox不兼容的解决方法集合

    网页设计很多情况下,需要注意ie跟firefox的不同区别,脚本之家提供了不好这样的文章,大家可以好好看下。
    2009-04-04

最新评论