百度地图基本事件: marker、polygon等覆盖物添加以及删除
如果添加大量聚合点的时候,请参考如下几篇文章
https://www.zhihu.com/question/24023333
https://blog.csdn.net/ztop_f/article/details/55256003
百度地图API 在使用点聚合时,如果放大、缩小或移动地图时,添加的文字标签会消失
覆盖物
添加marker
let point = new BMap.Point(115.430127, 40.960126);
let myIcon = new BMap.Icon("../static/images/mark.png", new BMap.Size(86, 90), {
anchor: new BMap.Size(10, 25),
});
// 创建标注对象并添加到地图
let marker = new BMap.Marker(point, { icon: myIcon });
map.addOverlay(marker);
添加多边形覆盖物Polygon
let pg = new BMap.Polygon([new BMap.Point(116.248323,39.893016),new BMap.Point(116.440344,39.893016),new BMap.Point(116.440344,39.811036),new BMap.Point(116.248323,39.811036)]);
map.addOverlay(pg);
添加文本标注label
let plb = new BMap.Point(116.408149,39.958087);
let lb = new BMap.Label('我是覆盖物Label',{point:plb});
map.addOverlay(lb);
marker点击事件
marker.addEventListener("click", function(){
console.log('点击了marker')
});
marker.enableDragging();
//marker.disableDragging(); // 不可拖拽
marker.addEventListener("dragend", function (e) {
var x = e.point.lng; //经度
var y = e.point.lat; //纬度
console.log("拖到的地点的经纬度:" + x + "," + y);
});
标注点(marker)添加点击事件,label其他覆盖物同理
marker.addEventListener("click", function(){
this.openInfoWindow(infoWindow); //提示信息
});
显示信息窗口,infoWindow
1. 在map上绑定:map.openInfoWindow(infowin,point);
let opts = {
width : 380, // 信息窗口宽度
height: 100, // 信息窗口高度
title : "电池柜信息" , // 信息窗口标题
};
let point = new BMap.Point(lng, lat);
let info = new BMap.InfoWindow('测试内容', opts); // 创建信息窗口对象
that.map.openInfoWindow(info, point);
// 关闭弹窗
// map.closeInfoWindow();
2. 在marker上添加infoWindow即做法是marker.openInfoWindow(infowin);
注意:此方法有问题,每次点击marker时,地图会自动将窗口平移到地图中心,这时窗口就消失了。建议用第一种方法
let opts = {
width : 380, // 信息窗口宽度
height: 100, // 信息窗口高度
title : "电池柜信息" , // 信息窗口标题
};
let info = new BMap.InfoWindow('测试内容', opts); // 创建信息窗口对象
marker.openInfoWindow(info)
this.map.centerAndZoom(new BMap.Point(116.404, 39.915), 4);
this.map.enableScrollWheelZoom();
删除标注或者覆盖物
1.删除单一marker
marker.remove();
//获取地图上所有的覆盖物
var allOverlay = map.getOverlays();
for(var i = 0;i<allOverlay.length;i++) {
if(allOverlay[i].toString()=="[object Marker]"){
if (allOverlay[i].getPosition().lng == longitude(待删除标注的经度) && allOverlay[i].getPosition().lat == latitude(待删除标注纬度)) {
map.removeOverlay(allOverlay[i]);
}
}
}
3. 删除所有标注或者覆盖物
map.clearOverlays();
打开地图
地址打开百度地图
// 测试链接
// <a href="http://api.map.baidu.com/marker?location=39.197709,117.185226&title=电池位置&content=天津市北辰区朝阳路&output=html&src=webapp.baidu.openAPIdemo"></a>
// http://api.map.baidu.com/geocoder?address=北京市海淀区上地信息路9号奎科科技大厦&output=html&src=webapp.baidu.openAPIdemo // 代码如下
let bdUrl = 'http://api.map.baidu.com/marker?location=' + lat + ',' + lng + '&title=' + address + '&content=测试&output=html&src=webapp.baidu.openAPIdemo'
let aNode = document.createElement('a')
aNode.setAttribute('href', url)
aNode.setAttribute('target', '_blank')
aNode.click()
地址打开高德地图
// 测试链接
<a href="https://uri.amap.com/marker?position=lng,lat&name=所在的位置名称"></a>
这有一个注意事项是:百度地图填写坐标是lat,lng,高德地图填写坐标是lng,lat
记录几个问题
问题:怎么监听地图点击?
map.addEventListener("click", function(){
alert("您点击了地图。");
});
问题:怎么获取用户拖动地图后地图中心的经纬度信息?
var map=newBMap.Map("container");
map.centerAndZoom(newBMap.Point(116.404,39.915),11);
map.addEventListener("dragend", function(){
var center =map.getCenter();
alert("地图中心点变更为:"+ center.lng +", "+ center.lat);
});
问题:怎么获取地图缩放后的级别?
var map=newBMap.Map("container");
map.centerAndZoom(newBMap.Point(116.404,39.915),11);
map.addEventListener("zoomend", function(){
alert("地图缩放至:"+this.getZoom()+"级");
})
问题:当地图发生点击事件时,怎么知道点击的是覆盖物还是地图?
map.addEventListener("click",function(e){
if(e.overlay){
alert('你点击的是覆盖物:'+e.overlay.toString());
}else{
alert('你点击的是地图');
}
});
百度地图基本事件: marker、polygon等覆盖物添加以及删除的更多相关文章
- 百度地图API如何给自定义覆盖物添加事件
摘要: 给marker.lable.circle等Overlay添加事件很简单,直接addEventListener即可.那么,自定义覆盖物的事件应该如何添加呢?我们一起来看一看~ --------- ...
- 百度地图结合ECharts实现复杂覆盖物(Overlay)
先来看效果图 一 前置知识 官方Overlay-覆盖物的抽象基类 方法 返回值 描述 initialize(map: Map) HTMLElement 抽象方法,用于初始化覆盖物,当调用map.add ...
- 百度地图 判断marker是否在多边形内
昨天画了圆形,判marker是否存在圆形内.今天来画多边形,判断marker在多边形内. 需要引入一个js <script type="text/javascript&quo ...
- 百度地图自定义Marker
最近写了百度地图的Demo,所以总结下遇到的问题: 1.首先在百度地图中创建应用时用到 发布版SHA1是在Preferences下的Android下的Build中;2.在使用百度地图时,先要创建一个A ...
- 百度地图JavascriptApi Marker平滑移动及车头指向行径方向
相信只要是使用百度地图做实时定位服务的朋友都会遇到这个问题,在对坐标位置进行覆盖物展示的时候,会出现由于获取坐标数据时间或者两个坐标点相距过远,导致在视觉上看Marker移动就像"僵尸跳&q ...
- 百度地图API的事件处理:覆盖物的如何阻止冒泡
百度地图,为了让事件使用的更方便,进行一层封装 详情可以看官方的文档 http://developer.baidu.com/map/jsdevelop-5.htm 主要的修改点: 1. 使用事件代理. ...
- 百度地图API示例:使用vue添加删除覆盖物
1.index.html <script type="text/javascript" src="http://api.map.baidu.com/api?v=2. ...
- 百度地图API示例之小实践 添加代理商标注
地图坐标无非是经度纬度. 每个代理商都有他的经度纬度参数,就能够在地图上标注出来了. 效果如下: 功能包括 标记代理商 显示导航 显示距离 测量距离 点击选中等 其中测距用到的是自定义控件 地图根据城 ...
- (转)Arcgis for javascript实现百度地图ABCD marker的效果
概述: 在我的博客中,有一篇相关的文章,这段时间,有很多人问我求源码,只是时间过去已长,源代码已找不到,乘着这个9.3放假,又重新实现了下,并相关代码做了优化,在此贴出来,方便大家使用. 相关文章地址 ...
- 百度地图JavaScript API覆盖物旋转时出现偏移
在项目中,调用百度地图JavaScript API,做覆盖物的旋转再添加到地图上,结果出现偏移了. 调试过程中的效果图: 发现图片的旋转并不是按车子的中心来的,而是之外的一个点.最后发现犯了一个很细节 ...
随机推荐
- 项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持windows、linux、国产麒麟系统)
需求 1.使用osg三维引擎进行动力学模型仿真性能测试: 2.打开动力学仿真模型文件,.k后缀的模型文件,测试加载解析过程: 3.解决第三方company的opengl制作的三维引擎,绘制面较 ...
- Docker修改IP地址方法
一.查看Docker IP root@master:/# ifconfig docker0 docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu ...
- Android dex、odex、oat、vdex、art区别
1.dex java程序编译成class后,dx工具将所有class文件合成一个dex文件,dex文件是jar文件大小的50%左右. 2.odex(Android5.0之前)全称:Optimized ...
- perf时 出现[kernel.kallsyms] 符号怎么办
在 perf 工具生成的火焰图中看到 [kernel.kallsyms],通常意味着火焰图中包含内核符号,但这些符号没有被正确解析.这可能是由于以下几个原因导致的: 内核符号表不可用或不完整:perf ...
- android 性能优化 -systrace
简介: Systrace允许监视和跟踪Android系统的行为(trace).它会指明系统都在哪些工作上花费时间.CPU周期都用在哪里,甚至可以看到每个线程.进程在指定时间内都在干嘛.它同时还会突出观 ...
- 开源项目更新|WPF/Uno Platform/WinUI 3三个版本的《英雄联盟客户端》
哈喽大家好! 我们是中韩Microsoft MVP夫妇 Vicky&James^^很高兴能加入博客园和大家分享我们的技术! 自2008年以来,我们一直深耕于WPF技术,积累了丰富的经验.这 ...
- Oracle问题:alter update modify 的区别是什么?
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247486480&idx=1 ...
- 云原生周刊:LitmusChaos 审计完成|2024.9.2
开源项目推荐 Gardener Gardener 实现了 Kubernetes 集群的自动化管理和操作服务,并提供了一个经过完全验证的可扩展性框架,可以调整以适应任何编程云或基础设施提供商. Graf ...
- KubeKey 2.0.0 发布:让离线部署 K8s 更加便捷
2022 年 3 月 8 日,KubeKey 2.0.0 正式发布,这是 KubeKey 的第 7 个正式版本,也是非常重要的一个版本.该版本新增了清单(manifest)和制品(artifact)的 ...
- h5+ 检测 APP 是否开启应用通知权限
h5+ 检测 APP 是否开启应用通知权限 原文可查看此处,搜索 h5+ 检测 APP 是否开启应用通知权限 https://mp.weixin.qq.com/mp/profile_ext?actio ...