Overlay在Openlayers里是浮动层的概念,区别于vector这样的图层,通常用于弹窗、撒点、以及解决加载icon样式不支持的gif等格式图片。

此次用overlay的过程中遇到很多问题,在此记录

一、创建Overlay

先简单理一下overlay加载机制:如果我定义了一个id为marks的div标签

创建overlay的时候elementid指向这个marks的div:

则会在ol-viewport的容器里,生成如下的结构:(当调用ol.Map()这个构造函数时,OpenLayers地图引擎会在内部创建一个视口容器(viewport container,一个css类名为ol-viewport的div DOM元素)并将其放置在target属性映射的地图容器元素中

二、移除Overlay

移除overlay有很多方法,这里尝试过的都列在下面

1、删除overlay图层

#这种方式会把overlay以及其指向的DOM都删除,对于再要新增overlay到这个DOM就会有问题(如点击弹窗)

map.removeOverlay(_overlay);

2、删除map中所有overlay图层,原理同1

map.getOverlays().clear();

3、推荐,这种方式会保留dom,但要记得在下次新增同类时删除,否则会生成好多dom造成冗余残留

overlay.setPosition(undefined);

overlay = null;

4、删除map中所有overlay图层,原理同3

        let olLyrs = this.encmap.getOverlays().getArray();
let olLyrsLength = this.encmap.getOverlays().getArray().length;
for(let i = 0;i < olLyrsLength;i++){
olLyrs[i].setPosition(undefined);
//olLyrs[i] = null;

三、Overlay冒泡机制

遇到一个问题:在overlay弹窗存在滚动条的情况下,鼠标滚轮滚动,地图缩放和overlay弹窗会一起触发。

这时候设置一下overlay的stopEvent,设置为true即可阻止冒泡

最新文章

  1. BI先特技软件 Analyzer安装时的部分问题
  2. 【小贴士】zepto find元素以及ios弹出键盘可能让你很头疼
  3. Django表单验证
  4. coco2dx加载网络图片并保存
  5. 使用proguard混淆android代码
  6. Flume NG中的Netcat Source
  7. Guava 15新特性介绍
  8. PTA第二次作业
  9. 使用PandoraBox时的软件源配置
  10. JavaScript资源网址
  11. 第一个SpringBoot程序
  12. C# 汉字与区位码之间的相互转换(中文数字字母可以,支持空格,但是特殊字符未来得及测试)
  13. Linux 流量监控工具 iftop
  14. 5、lvs使用进阶(01)
  15. java cp命令
  16. .NETMVC小笔记
  17. java项目实现流水号自动增长
  18. 现在转战c++的领域,纯幼儿园
  19. [翻译] CotEditor
  20. LINQ的查询标准操作汇总

热门文章

  1. 富文本编辑器(wangEditor)
  2. vue-property-decorator用法
  3. SpringBoot SpringCloud版本对应
  4. KAFKA集群搭建(自带zookeeper)
  5. django-URL转换器(四)
  6. ApplicationContextAware使用理解
  7. Tesseract引擎编译
  8. 学习笔记49_Redis
  9. DZY Loves Math II:多重背包dp+组合数
  10. java架构之路-(NoSql专题)MongoDB快速上手