marker拖拽获取坐标
 

如果添加大量聚合点的时候,请参考如下几篇文章

https://www.zhihu.com/question/24023333

https://blog.csdn.net/ztop_f/article/details/55256003

  

百度地图API 在使用点聚合时,如果放大、缩小或移动地图时,添加的文字标签会消失

https://www.jianshu.com/p/263cc04516ed

 

覆盖物

添加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,获取移动的坐标
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)
 

  

拖动地图得时候,marker标注消失
初始化地图的时候加入如下两行代码(虽然我也不知道什么意思,小声哔哔,暂时能解决问题就好)
this.map.centerAndZoom(new BMap.Point(116.404, 39.915), 4);
this.map.enableScrollWheelZoom();

删除标注或者覆盖物

1.删除单一marker

marker.remove();
2.删除指定标注或者覆盖物
//获取地图上所有的覆盖物
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等覆盖物添加以及删除的更多相关文章

  1. 百度地图API如何给自定义覆盖物添加事件

    摘要: 给marker.lable.circle等Overlay添加事件很简单,直接addEventListener即可.那么,自定义覆盖物的事件应该如何添加呢?我们一起来看一看~ --------- ...

  2. 百度地图结合ECharts实现复杂覆盖物(Overlay)

    先来看效果图 一 前置知识 官方Overlay-覆盖物的抽象基类 方法 返回值 描述 initialize(map: Map) HTMLElement 抽象方法,用于初始化覆盖物,当调用map.add ...

  3. 百度地图 判断marker是否在多边形内

    昨天画了圆形,判marker是否存在圆形内.今天来画多边形,判断marker在多边形内. 需要引入一个js      <script type="text/javascript&quo ...

  4. 百度地图自定义Marker

    最近写了百度地图的Demo,所以总结下遇到的问题: 1.首先在百度地图中创建应用时用到 发布版SHA1是在Preferences下的Android下的Build中;2.在使用百度地图时,先要创建一个A ...

  5. 百度地图JavascriptApi Marker平滑移动及车头指向行径方向

    相信只要是使用百度地图做实时定位服务的朋友都会遇到这个问题,在对坐标位置进行覆盖物展示的时候,会出现由于获取坐标数据时间或者两个坐标点相距过远,导致在视觉上看Marker移动就像"僵尸跳&q ...

  6. 百度地图API的事件处理:覆盖物的如何阻止冒泡

    百度地图,为了让事件使用的更方便,进行一层封装 详情可以看官方的文档 http://developer.baidu.com/map/jsdevelop-5.htm 主要的修改点: 1. 使用事件代理. ...

  7. 百度地图API示例:使用vue添加删除覆盖物

    1.index.html <script type="text/javascript" src="http://api.map.baidu.com/api?v=2. ...

  8. 百度地图API示例之小实践 添加代理商标注

    地图坐标无非是经度纬度. 每个代理商都有他的经度纬度参数,就能够在地图上标注出来了. 效果如下: 功能包括 标记代理商 显示导航 显示距离 测量距离 点击选中等 其中测距用到的是自定义控件 地图根据城 ...

  9. (转)Arcgis for javascript实现百度地图ABCD marker的效果

    概述: 在我的博客中,有一篇相关的文章,这段时间,有很多人问我求源码,只是时间过去已长,源代码已找不到,乘着这个9.3放假,又重新实现了下,并相关代码做了优化,在此贴出来,方便大家使用. 相关文章地址 ...

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

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

随机推荐

  1. Windows自动更新hosts(bat脚本方式)

    为了解决无法打开 github 网页的问题,才有了这个自动更新hosts 的命令脚本 hosts 里的内容会每日更新,内容从这里拿 文件:https://raw.hellogithub.com/hos ...

  2. Linux下执行文件删除的操作{确认!确认! 确认!再三确认!}

    ubuntu 删除文件夹命令 rm -r 文件名字 ---> 强制删除XXX文件 rm -f 文件名字 ---> 强制删除XXX文件(centos) 注: linux 中, 强制删除文件的 ...

  3. Android Qcom USB Driver学习(五)

    前面的几篇都有涉及,所以本文学习一下pmic usb charger都相关的vote机制 OVP: Over Voltage Protection 过压保护 USB_IN: Input current ...

  4. 【Simpleperf】Android的CPU分析,性能优化利器

    很多时候,写代码是一件很爽的事情,但最后需要对APP进行瘦身.性能分析却是一件很棘手的事情.当需要对APP的性能进行分析时,Simpleperf是一个简单快捷的选择. 正文开始前,先奉上官方的资料: ...

  5. LINQ 统计字符频率

    var arr = new string[] {"test","zhulongxu","asdfdgd","yangmi" ...

  6. 基础控件(Button,Edittext,ImageView,ProgressBar,ToolBar,AlertDialog,PopupWindow)

    Button 触发事件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...

  7. ArgoWorkflow教程(七)---高效的步骤间文件共享策略

    之前我们分析了使用 artifact 实现步骤间文件共享,今天分享一下如何使用 PVC 实现高效的步骤间文件共享. 1. 概述 之前在 artifact 篇我们演示了如何使用 artifact 实现步 ...

  8. Web渗透08_文件上传

    1 文件上传漏洞概述 文件上传几乎是每一个web,或者说是任何 服务器客户端模式 应用的必备功能,用户在自己的文章,博文中要上相关图片.用户上传自己的头像.网盘用户上传各种文件.等等.若服务器对此没有 ...

  9. Linux基础-学会使用命令帮助

    概述 使用 whatis 使用 man 查看命令程序路径 which 总结 参考资料 概述 Linux 命令及其参数繁多,大多数人都是无法记住全部功能和具体参数意思的.在 linux 终端,面对命令不 ...

  10. python 爬虫如何爬取动态生成的网页内容

    ---  好的方法很多,我们先掌握一种  --- [背景] 对于网页信息的采集,静态页面我们通常都可以通过python的request.get()库就能获取到整个页面的信息. 但是对于动态生成的网页信 ...