百度地图—绘制圆时实时显示圆半径详解编程语言
2023-06-13 09:20:40 时间
百度地图—绘制圆时实时显示圆半径
因为项目需要用到了地图的鼠标绘制工具,需求是在地图上圈选来选择地图上人员信息(地图上的marker点),这个百度地图本身是可以实现的。但客户提了一需求:在画圆的时候要实时的显示当前圆的半径。当时我的内心真是一万只草泥马飘过。。但秉着客户是上帝的理念,还是要满足客户的需求。话不多说,先看效果: ![效果图](https://img-blog.csdn.net/20160808212003312)
直接上代码:
!DOCTYPE html html head meta http-equiv="Content-Type" content="text/html; charset=utf-8" / meta name="viewport" content="initial-scale=1.0, user-scalable=no" / style type="text/css" body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";} #allmap {width: 100%; height:500px; overflow: hidden;} #result {width:100%;font-size:12px;} dl,dt,dd,ul,li{ margin:0; padding:0; list-style:none; p{font-size:12px;} dt{ font-size:14px; font-family:"微软雅黑"; font-weight:bold; border-bottom:1px dotted #000; padding:5px 0 5px 5px; margin:5px 0; dd{ padding:5px 0 0 5px; li{ line-height:28px; /style script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0 ak=自己的ak" /script !--加载鼠标绘制工具-- script type="text/javascript" src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js" /script link rel="stylesheet" href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css" / !--加载检索信息窗口-- script type="text/javascript" src="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.js" /script link rel="stylesheet" href="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.css" / title 鼠标绘制圆--实时显示圆半径 /title /head body div id="allmap" div id="map" /div /div script type="text/javascript" // 百度地图API功能 var map = new BMap.Map(map); var poi = new BMap.Point(116.307852,40.057031); map.centerAndZoom(poi, 16); map.enableScrollWheelZoom(); var overlay =null;//圆覆盖物 var label=null;//显示半径信息 /** * 绘制完成后的事件 var overlaycomplete = function(e) // ....... // 添加绘制完成的逻辑 //圆完成后清除地图上的覆盖物 centerPoint=null; overlay=e.overlay; map.removeOverlay(label); map.removeOverlay(overlay); var styleOptions = { strokeColor:"red", //边线颜色。 fillColor:"red", //填充颜色。当参数为空时,圆形将没有填充效果。 strokeWeight: 3, //边线的宽度,以像素为单位。 strokeOpacity: 0.8, //边线透明度,取值范围0 - 1。 fillOpacity: 0.6, //填充的透明度,取值范围0 - 1。 strokeStyle: solid //边线的样式,solid或dashed。 //实例化鼠标绘制工具 var drawingManager = new BMapLib.DrawingManager(map, { isOpen: false, //是否开启绘制模式 enableDrawingTool: true, //是否显示工具栏 drawingToolOptions: { anchor: BMAP_ANCHOR_TOP_RIGHT, //位置 offset: new BMap.Size(5, 5), //偏离值, drawingModes:[BMAP_DRAWING_CIRCLE ]// 只保留画圆模式 circleOptions: styleOptions //圆的样式 }); //添加鼠标绘制工具监听事件,用于获取绘制结果 drawingManager.addEventListener(overlaycomplete, overlaycomplete); var centerPoint=null;//圆心 map.addEventListener("mousemove", showInfo); /** * 监听鼠标移动事件 function showInfo(e){ //判断当前是画圆的模式 if(drawingManager._mask!=null) drawingManager._mask.addEventListener(mousedown, getCenter); map.removeEventListener("mousemove", showInfo); /** * 得到当前圆的圆心坐标 var getCenter = function (e) { if (centerPoint == null) { centerPoint=e.point; drawingManager._mask.addEventListener("mousemove", showRadis); /** * 实时显示半径 var showRadis= function (e) var radius=drawingManager._map.getDistance(centerPoint, e.point); if(!isNaN(radius)) map.removeOverlay(label); //取消上一个显示半径的label //添加文字标签 var opts = { position : e.point, // 指定文本标注所在的地理位置(当前鼠标的位置) offset : new BMap.Size(0, 0) //设置文本偏移量 label = new BMap.Label("当前半径:"+(radius/1000).toFixed(2)+"公里", opts); // 创建文本标注对象 label.setStyle({ border:"1px solid #ccc", maxWidth: "none ", }); map.addOverlay(label);//添加label /script /body /html
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/13836.html
cjava相关文章
- 【说站】百度搜索打击盗版网文站点公告,百度开始打击盗版网文。
- 谷歌浏览器设置地址栏默认搜索为百度搜索
- 网页批量更新快照软件-百度快照更新优化[通俗易懂]
- MetaDaily|中宣部将推动元宇宙、数字孪生等新业态拓展应用,百度虚拟数字人专利获授权
- 百度双塔召回引擎MOBIUS
- Python多线程结合队列下载百度音乐代码详解编程语言
- Linux下的百度搜索:赋予你新的手段(linux百度)
- 聊天机器人遇到不懂的还能上网搜索 像极了不懂装懂时偷偷百度的我
- 百度音乐下载 百度音乐v9.1.7 VIP绿色优化特别版
- 百度新政策禁止网站强制跳转APP 但百度自己依然强迫下载百度APP
- 百度金融布局金交所,账户和场景成掣肘
- 性能最高比英伟达T4强三倍!百度昆仑AI芯片进一步展示“杀手锏”应用
- 从简单百度操作Redis了解它的神奇(百度 redis操作)
- Oracle云带来更多可能性(oracle云 百度知道)
- 百度研究院院长林元庆:解读《最强大脑》背后的技术
- 百度着手封禁部分币圈相关贴吧 加密货币再受打击
- 百度联合两家公司成立供应链企业 注册资本一亿元
- 利用JS延迟加载百度分享代码,提高网页速度