由于一个地图中有很多种类型的覆盖物,由于某个覆盖物(一般是自定义)整个地图中只允许出现一次

那第一想到的就是,每次创建这个类型的覆盖物时先清除这一类型的覆盖物,比较简单判断覆盖物的类型 instanceof ,部分代码如下(红色代码为重点 ):

PoiMarker.prototype = new BMap.Overlay();
PoiMarker.prototype.initialize = function (map) {
this._map = map;
const div = this._div = document.createElement("div");
div.style.zIndex = BMap.Overlay.getZIndex(500);
div.style.position = "absolute";
div.style.background = "url(http://s.xxx.com/images/bcg-green.png) no-repeat bottom";
div.style.cursor = "pointer";
div.style.height = "42px";
const img = document.createElement("img");
img.src = this._img
div.style.zIndex = BMap.Overlay.getZIndex(400);
img.style.height = "36px";
img.style.width = "36px";
img.style.borderRadius = "26px";
img.style.border = "2px solid #72b80a";
div.appendChild(img);
// POI点击事件
div.onclick = (e) => {
// 禁止事件冒泡
const oEvent = e || event;
oEvent.cancelBubble = true;
// 删除其它的 poiInfoWindowMarker
//获取地图上所有的覆盖物
const allOverlay = this._map.getOverlays();
for (const item of allOverlay) {
if (item instanceof PoiInfoWindowMarker) {
this._map.removeOverlay(item);
}
}
const poiInfoWindowMarker = new PoiInfoWindowMarker(this._point, this._img);
// 添加节点数覆盖物到地图上(并将覆盖物注册)
this._map.addOverlay(poiInfoWindowMarker);
};
map.getPanes().labelPane.appendChild(div);
return div;
};
PoiMarker.prototype.draw = function () {
const map = this._map;
const pixel = map.pointToOverlayPixel(this._point);
this._div.style.left = (pixel.x - 18) + "px";
this._div.style.top = (pixel.y - 40) + "px";
}; this.poiMarker = PoiMarker

附带一张GIF图解:

*** 百度地图给出了根据label中的content比较后删除覆盖物(不太符合我需要的场景)

http://lbsyun.baidu.com/jsdemo.htm#c1_17

    function deletePoint(){
var allOverlay = map.getOverlays();
for (var i = 0; i < allOverlay.length -1; i++){
if(allOverlay[i].getLabel().content == "我是id=1"){
map.removeOverlay(allOverlay[i]);
return false;
}
}
}

百度地图JavaScript如何清除指定类型的覆盖物的更多相关文章

  1. 百度地图JavaScript API使用

    最近在完成优达学城前端开发(入门)课程的P4项目中,要求调用google地图进行交互,项目已提供部分js代码和html代码.但在申请google地图API密钥时由于网络等原因,打不开或者连接超时,所以 ...

  2. 百度地图JavaScript开发入门先知

    最近项目紧急开发了一些百度地图的功能,觉得百度地图实数强大!于是今天不忙总结一下,看到不错的文章先转载. 文章出处:https://www.opengps.cn/Blog/View.aspx?id=1 ...

  3. 百度地图JavaScript API覆盖物旋转时出现偏移

    在项目中,调用百度地图JavaScript API,做覆盖物的旋转再添加到地图上,结果出现偏移了. 调试过程中的效果图: 发现图片的旋转并不是按车子的中心来的,而是之外的一个点.最后发现犯了一个很细节 ...

  4. 百度地图JavaScript API经纬度查询-MAP

    百度地图JavaScript API经纬度查询-MAP-ABCDEFGHIJKMHNOPQRSTUVWXYZ: 搜索:<input type="text" size=&quo ...

  5. 【百度地图JavaScript API】手机端浏览器定位的实现

    [百度地图JavaScript API]手机端浏览器定位的实现 https://blog.csdn.net/xiao190128/article/details/72579476

  6. 百度地图 JavaScript API 极速版 开发体会

    前段时间百度地图API推出了 JavaScript API 极速版 1.0 简单看了一下,从产品定位来说真是挺好. 把开发人员细分成普通web开发人员和移动web开发人员.正好用到了手机地图这块决定尝 ...

  7. 最全面的百度地图JavaScript离线版开发

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5822231.html 项目要求web版百度地图要离线开发.这里总结下自己的开发过程和经验. 大概需求是:每辆 ...

  8. 百度地图JavaScript API自定义覆盖物、自定义信息窗口增删时的显示问题

    项目中,需求:在百度地图上实时画出车辆,并能点击车辆弹出信息框查看实时信息. 实现:通过不停的画覆盖物并删除掉.点击覆盖物时弹出信息窗口. 问题:删除掉覆盖物后信息窗也删除掉了.因为信息窗是建立在覆盖 ...

  9. 百度地图 javascript相关Bug搜集

    一 在手机里用百度地图js版做webapp   bug集合 1 之前用2.0版本的时候发现只要地图添加了覆盖物,无论数量多少,当地图放大到很小的范围时候,会卡死 1.1 当时处理办法:将版本降低至1. ...

随机推荐

  1. js判断数组,对象是否存在某一未知元素

    1.对象 var obj = { aa:'1111', bb:'2222', cc: '3333' }; var str='aa'; if(str in obj){ console.log(obj[s ...

  2. Java虚拟机结构分析

    https://www.cnblogs.com/Eason-S/p/5658188.html https://blog.csdn.net/u013256816/article/details/5148 ...

  3. 最新版本Firefox表单css兼容性

    场景描述: 为了在各浏览器上传控件保持统一的风格,用隐藏“浏览控件”的方式,在最新版本的Firefox下隐藏的“浏览”按钮漂移了. 问题分析: HTML代码: <form class=" ...

  4. hdu2665

    题解: 裸的主席树,记录最小值 代码: #include<cstdio> #include<cmath> #include<algorithm> #include& ...

  5. DevExpress v17.2新版亮点——VCL篇(一)

    用户界面套包DevExpress v17.2日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress VCL v17.2 的新功能,快来下载试用新版本! 全新的U ...

  6. SharePoint Word Service-PowerShell

    1. 配置转换进程 Set-SPWordConversionServiceApplication –Identity "Word Automation Services" –Act ...

  7. button确定取消事件

    对于前端这边,我们往往有这样的需求,即触发某一事件后(例如单击事件)想要根据用户的主管选择来进行下一个操作,例如停止监控事件,往往希望点击提示中的“确定”按钮再真正的去停止,否则不会,一般会用到Dia ...

  8. tp 邮件发送

    1.需要phpmail邮件发送包, 2.邮件发送函数function sendMail($to, $title, $content){ require_once('./PHPMailer_v5.1/c ...

  9. php变量和字符串连接符——点

    连接符——点,本身也是一种运算符.它真正的名字应该叫“字符运算符”.作用是把两个字符串连接起来. echo 字符 . 变量 . 字符;  //点号把三个值连接成为一个,运行正常. 例: 1.字符串+变 ...

  10. .Net Entity Framework Core 用 HasColumnType 配置浮点数精度

    一.前言 前段时间用.Net Entity Framework core搭建框架,需要配置浮点数的精度,发现.Net Entity Framework core 并没有HasPrecision方法.在 ...