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自定义坐标点内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Vue+Openlayers实现实时坐标点展示

    本文实例为大家分享了Vue+Openlayers实现实时坐标点展示的具体代码,供大家参考,具体内容如下 直接上代码 <!--  * @Description: 实时坐标点  * @Author: Dragon  * @Date: 2020-12-18 10:08:40  * @LastEditTime: 2020-12-18 15:59:29  * @LastEditors: Dragon -->   <template>   <div id="map"&

  • OpenLayers3实现鼠标移动显示坐标

    本文实例为大家分享了OpenLayers3实现鼠标移动显示坐标的具体代码,供大家参考,具体内容如下 1. 前言 鼠标移动显示坐标,OpenLayers 3 框架提供了鼠标移动显示坐标的控件(ol.control.MousePosition),默认显示在地图的右上角,其样式可以自定义.在这个例子中,我们通过前面的加载 OSM 加载瓦片图层,实现在地图容器的左下角显示坐标点的信息. 2. 实现思路 (1)新建一个网页,参考前面的加载 OSM 瓦片地图,实现加载瓦片地图. (2)在地图容器中新建一个

  • vue-openlayers实现地图坐标弹框效果

    本文实例为大家分享了vue-openlayers实现地图坐标弹框的具体代码,供大家参考,具体内容如下 openlayers 这个效果是点击地图,弹出坐标信息. 点击地图边缘时,底图会跟着移动,使弹窗能完整显示出来. <template> <div class="vm"> <h2 class="h-title">弹窗 popup</h2> <div id="map" class="ma

  • Openlayers显示地理位置坐标的方法

    本文实例为大家分享了Openlayers显示地理位置坐标的具体代码,供大家参考,具体内容如下 1.新建一个html页面,引入ol.js和ol.css文件,然后在body中创建两个div标签,分别用来作为地图和鼠标位置控件的容器: 2.代码实现 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type

  • openlayers实现图标拖动获取坐标

    本文实例为大家分享了openlayers实现图标拖动获取坐标的具体代码,供大家参考,具体内容如下 本文所涉及的技术如下: openlayers加载国家天地图和浙江天地图,图标拖动获取位置,openlayers动画. 效果如下: 代码如下: var map; var dataResult; var app = {}; /** * @constructor * @extends {ol.interaction.Pointer} */ app.Drag = function() { ol.intera

  • 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

  • Qt自定义Plot实现曲线绘制的详细过程

    简介 实现了qt绘制曲线功能,包含arm触摸屏多点触控缩放(只支持两点),实时曲线绘制,数据点根据绘制宽度优化,跟踪点数据获取,双坐标等功能 演示 代码 头文件 plot.h /* * 作者:老人与海 * 博客:https://blog.csdn.net/qq_41340733 * 代码不保证稳定性,请勿用于商业用途 */ #ifndef PLOT_H #define PLOT_H #include <QWidget> #include <QTimer> #include <

  • 自定义View之kotlin绘制折线图实例教程

    什么是Kotlin Kotlin,它是JetBrains开发的基于JVM的面向对象的语言.2017年的时候被Google推荐Android的官方语言,同时Android studio 3.0正式支持这门语言,在这个编译器上创建一个Kotlin项目,非常方便,甚至可以Java转为Kotlin. 引言 早上看到有个童鞋在群里面发牢骚,说这个自定义view怎么画,不太会,ok,正好我也没事,那我就花两个小时帮你搞定他吧,先看下他要的效果; 再来看下我实现的效果 实现过程 主要分为x轴和y轴,由效果图可

  • matplotlib自定义鼠标光标坐标格式的实现

    matplotlib默认在图像Windows窗口中显示当前鼠标光标所在位置的坐标,格式为x=xx, y=xx. 鼠标光标的坐标格式由子图模块Axes中的format_coord函数控制. 通过重写format_coord函数即可实现坐标的自定义格式. 注意:调用format_coord函数的对象是子图对象,常见的错误主要在没有正确的获取当前子图对象. format_coord函数源码 matplotlib.axes.Axes.format_coord def format_coord(self,

  • R语言绘制坐标 保存图片的操作

    绘制坐标 有时候我们绘制坐标的时候,需要改变坐标轴的定义,我们以日期为横坐标绘制时间序列为例讲解 先列举简单的例子: rnorm(n, mean = 0, sd = 1) n 为产生随机值个数(长度),mean 是平均数, sd 是标准差 . > rnorm(10,1,sd = 2) [1] 1.98984356 -1.93403191 -1.15324772 0.84623524 -0.73123833 -2.77682328 -0.74316683 -0.02913632 -0.800634

  • Android 自定义图片地图坐标功能的实现

    一.前言 最近项目要求实现一个在自定义地图图片上添加坐标信息的功能,类似于在图片做标注的功能.如下图所示.坐标的位置是相对于图片宽高的百分比 二.思路 改功能主要分为三个视图,1.继承FrameLayout作为父容器:2.添加一个铺满父布局的ImageView显示地图图片:3.动态添加自定义坐标视图 三.代码实现 1. 自定义坐标视图 <?xml version="1.0" encoding="utf-8"?> <androidx.constrai

  • Vue结合openlayers按照经纬度坐标实现锚地标记及绘制多边形区域

    目录 前言 1.安装openlayers 2.引入模块 3.地图与弹窗html样式 4.data数据定义 5.methods方法 6.mounted数据加载 7.锚地数据获取 前言 本文介绍vue结合openlayers实现根据返回的经纬度坐标完成锚地标记.绘制多边形区域: 注意点: 1.根据返回的经纬度取第一个坐标作为锚地图标位置: 2.根据返回的经纬度坐标数据,这里的后台数据需要处理(根据返回的数据处理成需要的格式),得到坐标数组渲染绘制区域画图显示在航道图层上. 3.关于数据渲染的问题:

  • Android自定义日历控件实例详解

    为什么要自定义控件 有时,原生控件不能满足我们对于外观和功能的需求,这时候可以自定义控件来定制外观或功能:有时,原生控件可以通过复杂的编码实现想要的功能,这时候可以自定义控件来提高代码的可复用性. 如何自定义控件 下面我通过我在github上开源的Android-CalendarView项目为例,来介绍一下自定义控件的方法.该项目中自定义的控件类名是CalendarView.这个自定义控件覆盖了一些自定义控件时常需要重写的一些方法. 构造函数 为了支持本控件既能使用xml布局文件声明,也可在ja

  • Android自定义View实现环形进度条的思路与实例

    前言 前段时间看到了豆瓣FM的音乐播放界面,有一个环形的进度条,非常的好看,于是想了想,为什么不自己做一个呢,于是就开始了自定义的过程 豆瓣FM的播放界面如下图: 功能分析 虽然功能比较简单,但是仍然需要仔细分析 1.图标外还有一圈圆圈,可以设置宽度 2.圆形进度条和进度条底部,可以设置宽度,颜色等 3.内部有一个圆形图片,可旋转 实现思路分析 1.可以设置宽度的圆圈 这个比较容易,直接在onDraw方法中使用canvas绘制即可,当然,在间距和半径的处理上需要仔细,控件本体其实还是一个长方形,

  • Android自定义view制作绚丽的验证码

    废话不多说了,先给大家展示下自定义view效果图,如果大家觉得还不错的话,请继续往下阅读. 怎么样,这种验证码是不是很常见呢,下面我们就自己动手实现这种效果,自己动手,丰衣足食,哈哈~ 一. 自定义view的步骤 自定义view一直被认为android进阶通向高手的必经之路,其实自定义view好简单,自定义view真正难的是如何绘制出高难度的图形,这需要有好的数学功底(后悔没有好好学数学了~),因为绘制图形经常要计算坐标点及类似的几何变换等等.自定义view通常只需要以下几个步骤: 写一个类继承

随机推荐