在百度地图上实现鼠标滑过marker时打开自定义的信息窗口,当鼠标滑出marker时关闭已打开的信息窗口。

首先,需要在地图上添加一个marker,具体如下所示:

$.ajax({async:false,cache:true,url: "获取位置信息的接口",type: 'GET',success: function(result){if(result != undefined && result.length >0){map.centerAndZoom(new BMap.Point(result[0].longitude, result[0].latitude));var longitude = [], latitude = [];for (var i = 0; i < result.length; i++) {longitude[i] = result[i].longitude;latitude[i] = result[i].latitude;var steelMarker = new BMap.Marker(new BMap.Point(longitude[i],latitude[i]), {title:"钢材"}, {icon:new BMap.Icon("myCar.png", new BMap.Size(25, 20))});map.addOverlay(steelMarker);  //将标注添加到地图中}}},error:function(e){//alert("获取信息失败");}
});

添加marker以后,就可以实现鼠标滑过marker时打开自定义信息窗口的事件了。

百度地图的marker有一个addEventListener()事件,具体为:addEventListener(event: String, handler: Function),即给marker添加事件监听函数。marker添加的监听事件包括:

事件 参数 描述
click event{type, target} 点击标注图标后会触发此事件
dblclick event{type, target, point,pixel} 双击标注图标后会触发此事件
mousedown event{type, target, point,pixel} 鼠标在标注图上按下触发此事件
mouseup event{type, target, point,pixel} 鼠标在标注图上释放触发此事件
mouseout event{type, target, point,pixel} 鼠标离开标注时触发此事件
mouseover event{type, target, point,pixel} 当鼠标进入标注图标区域时会触发此事件
remove event{type, target} 移除标注时触发
infowindowclose event{type, target} 信息窗在此标注上关闭时触发此事件
infowindowopen event{type, target} 信息窗在此标注上打开时触发此事件
dragstart event{type, target} 开始拖拽标注时触发此事件
dragging event{type, target, pixel, point} 拖拽标注过程中触发此事件
dragend event{type, target, pixel, point} 拖拽结束时触发此事件
rightclick event{type, target} 右键点击标注时触发此事件

将addEventListener(event: String, handler: Function)中的event写为“mouseover”,即可为marker添加一个鼠标滑过事件;然后使handler实现打开自定义窗口信息的功能,具体是利用marker的openInfoWindow()方法,即openInfoWindow(infoWnd: InfoWindow)。在调用openInfoWindow()方法之前,应首先定义一个百度地图的信息窗口即InfoWindow,创建信息窗口的函数为:InfoWindow(content: String | HTMLElement, opts: InfoWindowOptions),其中,content即为所创建信息窗口的内容;而opts是此信息窗口的可选参数,这些参数包括:width、height、maxWidth、offset、title、enableAutoPan、enableCloseOnClick、enableMessage、message等。

① 创建百度地图信息窗口:

var steelContent = '<div><p style="margin:0;line-height:1.5;font-size:13px;text-indent:2em"><br/>经度:'+longitude[i]+'<br/>纬度:'+latitude[i]+
'<br/><a style="float:right;margin:10px" href="/ILTS/orderDetail/orderDetail.html?id='+goodsId+'&goodsStatus='+goodsStatus+'">物资详情</a></p></div>';
var steelOpts = {width : 260,     //信息窗口宽度height: 200,     //信息窗口高度title : "<b>车辆信息</b>" , //信息窗口标题enableMessage:true    //设置允许信息窗发送短息
};
new BMap.InfoWindow(steelContent, steelOpts);

② 利用openInfoWindow打开创建好的信息窗口:

steelMarker.openInfoWindow(new BMap.InfoWindow(steelContent, steelOpts));

③ 通过addEventListener将上面的打开信息窗口添加为steelMarker的鼠标滑过事件mouseover即可:

steelMarker.addEventListener("mouseover",function () {this.openInfoWindow(new BMap.InfoWindow(steelContent, steelOpts));}
);

④ 利用closeInfoWindow关闭信息窗口:

steelMarker.closeInfoWindow();

⑤  通过 addEventListener将上面的关闭信息窗口添加为steelMarker的鼠标移开事件mouseout即可:

steelMarker.addEventListener("mouseout",function () {this.closeInfoWindow();}
);

这样就实现了鼠标滑过时打开自定义信息窗口,鼠标移开时关闭自定义信息窗口的功能。总结如下:

$.ajax({async:false,cache:true,url: "获取位置信息的接口",type: 'GET',success: function(result){if(result != undefined && result.length >0){map.centerAndZoom(new BMap.Point(result[0].longitude, result[0].latitude));var longitude = [], latitude = [];for (var i = 0; i < result.length; i++) {longitude[i] = result[i].longitude;latitude[i] = result[i].latitude;var steelMarker = new BMap.Marker(new BMap.Point(longitude[i],latitude[i]), {title:"钢材"}, {icon:new BMap.Icon("myCar.png", new BMap.Size(25, 20))});//var steelContent = '<div><p style="margin:0;line-height:1.5;font-size:13px;text-indent:2em"><br/>经度:'+longitude[i]+'<br/>纬度:'+latitude[i]+'<br/><a style="float:right;margin:10px" href="/ILTS/orderDetail/orderDetail.html?id='+goodsId+'&goodsStatus='+goodsStatus+'">物资详情</a></p></div>';var steelOpts = {width : 260,     //信息窗口宽度height: 200,     //信息窗口高度title : "<b>车辆信息</b>" , //信息窗口标题enableMessage:true  //设置允许信息窗发送短息};map.addOverlay(steelMarker); //将标注添加到地图中//添加鼠标滑过时打开自定义信息窗口事件steelMarker.addEventListener("mouseover",function () {this.openInfoWindow(new BMap.InfoWindow(steelContent, steelOpts));});//添加鼠标离开时关闭自定义信息窗口事件steelMarker.addEventListener("mouseout",function () {this.closeInfoWindow();});}}},error:function(e){//alert("获取信息失败");}
});

百度地图鼠标滑过marker时打开自定义信息窗口相关推荐

  1. js百度地图鼠标移上覆盖物时 省市区高亮,移走时恢复

    鼠标移入事件 mouseoverMark (area) {//加了定时器是防止频繁触发移入事件clearTimeout(this.c);this.c = setTimeout(() => {// ...

  2. 百度地图自定义信息窗口样式

    在项目中,UI经常会把信息窗口做自定义设计,那么如何实现自定义样式的信息窗口呢.核心代码如下: /** 创建信息窗口* */function _createMapvInfoWindow(width,h ...

  3. 百度地图鼠标经过图层时高亮显示图标及标签内容

    百度地图开发常用网站 1.百度地图开放平台 http://lbsyun.baidu.com/ 2.百度地图 Javascript API JavaScript API v3.0 http://lbsy ...

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

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

  5. js百度地图鼠标绘制工具条库

    本篇文章是介绍百度地图鼠标绘制工具条库基本使用 百度地图的覆盖物的编辑类参考:[鼠标绘制工具条库](http://api.map.baidu.com/library/DrawingManager/1. ...

  6. 百度地图添加多个marker点位标注

    百度地图添加多个marker点位标注 新建一个TMap.js文件 export function TMap(key) {return new Promise(function (resolve, re ...

  7. 百度地图api html信息窗口,百度地图 javascript api自定义信息窗口

    百度 js api中存在infoWindow的类,就是marker 点击后显示的信息窗口, 他存在一下问题 1.在map中只能显示一个infowindow, 2.该信息窗口的样式无法修改,显示的内容具 ...

  8. 使用百度地图Web服务API查询地点的经纬度信息

    使用百度地图Web服务API查询地点的经纬度信息 API地理编码服务 数据 结果 API地理编码服务 地理编码服务(又名Geocoder)是一类Web API接口服务: 地理编码服务提供将结构化地址数 ...

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

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

最新文章

  1. [设计模式]设计模式之禅关于接口隔离原则
  2. 2021云上架构与运维峰会将于12月4日在上海举办,五大精彩看点不容错过
  3. 十六进制转double
  4. TRUNCATE vs DELETE命令
  5. java中的多线程的示例
  6. 沉淀再出发:关于java中的AQS理解
  7. Zabbix监控Nginx连接状态
  8. 【系统】lsof 命令简介
  9. CMM3 正式评估全过程
  10. HART协议数据格式和消息结构的举例分析
  11. 好用用的linux 监控命令
  12. Windows 禁用U盘
  13. 乒乓球【击球】基础知识
  14. (姊妹仨)BlazePalm: 先检手掌再检骨架,虚拟合成数据助力 2.5D 信息输出
  15. 关于模型评价标准的例子
  16. 我整理了一些Python测试的库,看一下有没有你需要的库
  17. Item category 04000 is missing (obligatory in accounting transaction 1000/0)
  18. 【舒适区如何影响着我的生活】
  19. feign调用的重试机制,如何关闭
  20. 利用计算机设计比率分析模型,计算机财务管理.pdf

热门文章

  1. Kubeadm初始化报错:[ERROR CRI]: container runtime is not running:
  2. 软件测试-工作流程(需求分析评审、测试计划、测试用例、用例评审、执行测试、跟踪定位bug、测试报告、缺陷报告)
  3. 书摘 - 重新定义公司:谷歌是如何运营的
  4. LeetCode(C++)刷题计划:15-三数之和
  5. python之多线程并发
  6. HKC G801铃声音量增大办法
  7. linux hexdump显示格式c数组,linux hexdump使用
  8. 服务器采购项目实施方案
  9. 怎么在电脑上玩主宰之王手游 主宰之王电脑版玩法教程
  10. URL正则校验以及邮箱正则校验