百度地图基本事件: 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,做覆盖物的旋转再添加到地图上,结果出现偏移了. 调试过程中的效果图: 发现图片的旋转并不是按车子的中心来的,而是之外的一个点.最后发现犯了一个很细节 ...
随机推荐
- 【赵渝强老师】Oracle数据库的内存结构
首先,我们通过一张图片来了解一下Oracle数据库的内存结构,如下: 每个数据库实例有两个关联的内存结构-系统全局区(SGA),程序全局区(PGA). 系统全局(SGA):一组共享的内存结构(称为SG ...
- C#/.NET/.NET Core开发实战教程集
DotNetGuide介绍 DotNetGuide是一个专注于C#/.NET/.NET Core学习.工作.面试指南的GitHub知识库,该知识库在GitHub中Star数已突破6.5k+当然这离不开 ...
- px 、em、rem 的选取依据
1. px 像素(Pixel).绝对单位.像素px是相对于显示器屏幕分辨率而言的,是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果 px要换算成物理长度,需要 指定精度 DPI. 2. em ...
- OpenAI官方开源多智能体框架「Swarm」,并不是我想要的多智能体框架
今天早上,OpenAI实施团队的 @shyamal在Github上开源了Swarm这个OpenAI官方的多智能体框架.不得不说,OpenAI官方下场,获得的社区影响就是不一样,在微信群.朋友圈里已经出 ...
- 云原生爱好者周刊:寻找 Netlify 开源替代品
开源项目推荐 Coolify Coolify 是一个开源自托管的 Heroku/Netlify 替代品,颜值还不错. Podman Desktop Podman Desktop 是针对 Podman ...
- CSS修改鼠标样式
CSS可以修改鼠标样式,即将鼠标移到元素上时,自动切换为其他样式或者自定义图片. 设置属性cursor为各种鼠标形态(把鼠标移到标签上看效果): 标签 对应形态 auto 自动选择 crosshair ...
- HTML标签 b 和 strong 的区别
<b>标签和<strong>标签都表示加粗,效果通常是一样的: <b>:义演丁真<strong>:义演丁真 类似的还有<em>和<i& ...
- c语言里关于本地变量的一些规则
关于块的定义(自己的理解):就是☞{ }这个区域里面的东西以及" {} "这个符号的本身 ·本地的变量是定义在块内的 -->>1.它可以定义在函数的块内 void sw ...
- unique:数组去重,返回一个新数组
function unique(arr){ if(!isArrayLink(arr)){ //不是类数组对象 return arr } let result = [] let objarr = [] ...
- C# 串口读取并转换字符串
public string ReadString() { ASCIIEncoding ascii = new ASCIIEncoding(); byte[] readBuffer = new byte ...