百度地图JavaScript如何清除指定类型的覆盖物
由于一个地图中有很多种类型的覆盖物,由于某个覆盖物(一般是自定义)整个地图中只允许出现一次
那第一想到的就是,每次创建这个类型的覆盖物时先清除这一类型的覆盖物,比较简单判断覆盖物的类型 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如何清除指定类型的覆盖物的更多相关文章
- 百度地图JavaScript API使用
最近在完成优达学城前端开发(入门)课程的P4项目中,要求调用google地图进行交互,项目已提供部分js代码和html代码.但在申请google地图API密钥时由于网络等原因,打不开或者连接超时,所以 ...
- 百度地图JavaScript开发入门先知
最近项目紧急开发了一些百度地图的功能,觉得百度地图实数强大!于是今天不忙总结一下,看到不错的文章先转载. 文章出处:https://www.opengps.cn/Blog/View.aspx?id=1 ...
- 百度地图JavaScript API覆盖物旋转时出现偏移
在项目中,调用百度地图JavaScript API,做覆盖物的旋转再添加到地图上,结果出现偏移了. 调试过程中的效果图: 发现图片的旋转并不是按车子的中心来的,而是之外的一个点.最后发现犯了一个很细节 ...
- 百度地图JavaScript API经纬度查询-MAP
百度地图JavaScript API经纬度查询-MAP-ABCDEFGHIJKMHNOPQRSTUVWXYZ: 搜索:<input type="text" size=&quo ...
- 【百度地图JavaScript API】手机端浏览器定位的实现
[百度地图JavaScript API]手机端浏览器定位的实现 https://blog.csdn.net/xiao190128/article/details/72579476
- 百度地图 JavaScript API 极速版 开发体会
前段时间百度地图API推出了 JavaScript API 极速版 1.0 简单看了一下,从产品定位来说真是挺好. 把开发人员细分成普通web开发人员和移动web开发人员.正好用到了手机地图这块决定尝 ...
- 最全面的百度地图JavaScript离线版开发
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5822231.html 项目要求web版百度地图要离线开发.这里总结下自己的开发过程和经验. 大概需求是:每辆 ...
- 百度地图JavaScript API自定义覆盖物、自定义信息窗口增删时的显示问题
项目中,需求:在百度地图上实时画出车辆,并能点击车辆弹出信息框查看实时信息. 实现:通过不停的画覆盖物并删除掉.点击覆盖物时弹出信息窗口. 问题:删除掉覆盖物后信息窗也删除掉了.因为信息窗是建立在覆盖 ...
- 百度地图 javascript相关Bug搜集
一 在手机里用百度地图js版做webapp bug集合 1 之前用2.0版本的时候发现只要地图添加了覆盖物,无论数量多少,当地图放大到很小的范围时候,会卡死 1.1 当时处理办法:将版本降低至1. ...
随机推荐
- maven分别打包开发、生产配置文件
项目工程针对开发和生产有两套配置,开发配置文件目录:src/main/resources/ applicationContext.xml (开发和生产共用) dubbo.propertie ...
- .NET 性能优化方法总结==转
.NET 性能优化方法总结 目录 目录 1. C#语言方面... 4 1.1 垃圾回收... 4 1.1.1 避免不必要的对象创建... 4 1.1.2 不要使用空析构函数 ★... 4 1.1.3 ...
- 信号的发送kill,raise,alarm,setitimer,abort,sigqueue
1.kill函数 int kill(pid_t pid, int sig); 发送信号给指定的进程. (1) If pid is positive, then signal sig is sent t ...
- PHP:第一章——PHP中的位运算
//位运算: /*$a & $b;//And(按位与).$a和$b都为1的被设为1: $a | $b;//(按位或).$a和$b任何一个为1的位被设为1 $a ^ $b;//Xor(按位异或) ...
- 快速切题 sgu117. Counting 分解质因数
117. Counting time limit per test: 0.25 sec. memory limit per test: 4096 KB Find amount of numbers f ...
- System.out.println(i++); System.out.println(++i);的区别
之前一直对i++和++i很模糊,这次通过两个小demo来探究下. 例1: public static void main(String[] args) { int i=2; System.out.pr ...
- Thinkphp5 微信公众号token验证不成功的原因
最近要启动微信项目,上个月就开始了解微信的开发,这个月要启动项目,配置微信公众号信息一直失败.为此,我甚至手工写了微信提交过来的记录,如: ×tamp=1510210523& ...
- 【DevExpress v17.2新功能预告】DevExpress ASP.NET Scheduler新的自适应功能
自适应Web设计可以帮助您解决各种尺寸的屏幕问题,网站的自适应网页设计可帮助您解决用户使用不同大小屏幕显示数据的问题. 在v17.2中,我们最大化了ASP.NET Scheduler的视图和可视化元素 ...
- <NET CLR via c# 第4版>笔记 第12章 泛型
泛型优势: 源代码保护 使用泛型算法的开发人员不需要访问算法的源代码.(使用c++模板的泛型技术,算法的源代码必须提供给使用算法的用户) 类型安全 向List<DateTime>实例添加一 ...
- define 常量的定义和读取
define(‘常量’,‘常量值’)----------------------define来定义常量, echo 也能输出常量, get_defined_constants(true)------- ...