百度地图 画圆 删除标注

把下面这段代码复制到百度地图的demo中运行,效果就是我想设计的效果。

<!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;}
        p{margin-left:5px; font-size:14px;}
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>
    <title>圆形区域搜索</title>
</head>
<body>
    <div id="allmap"></div>
    <p>返回北京市地图上圆形覆盖范围内的“餐馆”检索结果,并展示在地图上</p>
</body>
</html>
<script type="text/javascript">
    // 百度地图API功能
    var map = new BMap.Map("allmap");            // 创建Map实例
    var mPoint = new BMap.Point(116.404, 39.915);
    map.enableScrollWheelZoom();
    map.centerAndZoom(mPoint,15);

    var circle = new BMap.Circle(mPoint,1000,{fillColor:"blue", strokeWeight: 1 ,fillOpacity: 0.3, strokeOpacity: 0.3,enableEditing:true});
    map.addOverlay(circle);
    var removecircle = function(e,ee,marker){
      //取得地图上所有的覆盖物
      var overlays = map.getOverlays();
      //取得圆形区域
      var bounds = marker.getBounds();
      var maker_arr = [];
      for(var i=0;i<overlays.length;i++){
        //判断 覆盖物为标注的并且是在圆形区域内部的
       if(overlays[i].uQ == "Marker"){
            //获取标注点到圆心的距离 与半径做对比
            if(map.getDistance(marker.getCenter(),overlays[i].getPosition()) < marker.getRadius()){
              maker_arr.push(overlays[i]);
            }
        }
      }
      var r=confirm("你确定要删除区域中"+(maker_arr.length-1)+"个标注吗?");

      if (r==true){
        for(var i=0;i<maker_arr.length;i++){
           map.removeOverlay(maker_arr[i]);
        }
        map.removeOverlay(marker);
      }else{
         map.removeOverlay(marker);
      }
    }
    //创建右键菜单
    var circleMenu=new BMap.ContextMenu();
    circleMenu.addItem(new BMap.MenuItem('删除',removecircle.bind(removecircle)));
      circle.addContextMenu(circleMenu);
  var local =  new BMap.LocalSearch(map, {renderOptions: {map: map, autoViewport: false}});
    //local.searchNearby('餐馆',mPoint,1000);
     function addMarker(point){
      var marker = new BMap.Marker(point);
      map.addOverlay(marker);
    }
    // 随机向地图添加25个标注
    var bounds = map.getBounds();
    var sw = bounds.getSouthWest();
    var ne = bounds.getNorthEast();
    var lngSpan = Math.abs(sw.lng - ne.lng);
    var latSpan = Math.abs(ne.lat - sw.lat);
    for (var i = 0; i < 5; i ++) {
        var point = new BMap.Point(sw.lng + lngSpan * (Math.random() * 0.7), ne.lat - latSpan * (Math.random() * 0.7));
        addMarker(point);
    }
</script>

 

功能:以某个区域批量删除maker。

功能的设计思路:

1 右键菜单--》区域删除机构。

  

 

2 先画圆(以鼠标点击的某个点为中心点 画圆)。

 

 

3 得到圆中所选中的标注(主键)。

  

 4 圆上右键删除

 

4 .1 确定 删除圆,删除标注(连接数据库数据)。

 

4.2 取消  删除圆。

 

 

主要功能代码(js);

百度地图API:Class:覆盖物类/Circle

http://developer.baidu.com/map/reference/index.php?title=Class:%E8%A6%86%E7%9B%96%E7%89%A9%E7%B1%BB/Circle

 

                   {
                      text:'区域删除机构',
                      callback:function(e){
                          var mPoint=new BMap.Point(e.lng,e.lat);// 得到中心点坐标

                          // 一句js画圆     但是这个不可以重复画圆 需要刷新页面后才可以重新画圆
                          /* var circle = new BMap.Circle(mPoint,1000,{fillColor:"blue", strokeWeight: 1 ,fillOpacity: 0.3, strokeOpacity: 0.3,enableEditing:true});
                          map.addOverlay(circle); */

                           var circle = new BMap.Circle(mPoint,5000);
                           circle.setFillColor("blue"); //填充颜色
                           circle.setStrokeWeight(1);//    设置圆形边线的宽度,取值为大于等于1的整数。
                           circle.setFillOpacity(0.3);// 返回圆形的填充透明度。
                           circle.setStrokeOpacity(0.3);// 设置圆形的边线透明度,取值范围0 - 1。    

                           // 这样画圆 可编辑的圆    这两句js代码的位置不可改变
                           map.addOverlay(circle);// 把圆添加到地图中
                           circle.enableEditing();// 设置可编辑的圆

                           var removecircle = function(e,ee,marker){
                               var deleteid=[];
                               var idd=[];
                            //取得地图上所有的覆盖物
                            var overlays = map.getOverlays();
                            //取得圆形区域
                            var bounds = marker.getBounds();
                            var maker_arr = [];
                            var maker_id =[];
                            for(var i=0;i<overlays.length;i++){
                              //判断 覆盖物为标注的并且是在圆形区域内部的
                              if(overlays[i].uQ == "Marker" && overlays[i].id){
                                  //获取标注点到圆心的距离 与半径做对比
                                  if(map.getDistance(marker.getCenter(),overlays[i].getPosition()) < marker.getRadius()){
                                     maker_arr.push(overlays[i]);
                                     maker_id.push(overlays[i].id);// 标注主键值
                                  }
                              }
                            }
                          $.messager.confirm('确认','你确定要删除区域中选中的标注吗?',function(r){
                               if (r==true){
                                        map.removeOverlay(circle)// 删除圆
                                     for(var i=0;i<maker_id.length;i++){
                                      $.ajax({
                                            type: 'delete',
                                               url: '/yxt-admin/admin/hospital/' + maker_id[i] + '/delete',
                                               success: function(data) {
                                                 if (data.stateCode == 200) {
                                                   $.messager.show({
                                                     title: '提示消息',
                                                     msg: data.message,
                                                     timeout: 5000,
                                                     showType: 'slide'
                                                   });
                                                 }else if(data.stateCode==205){
                                                       $.messager.alert('提醒','登录已超时 重新登录','info',function(){
                                                        top.location.href="/yxt-admin/adminLogin.html";
                                                   });
                                                  } else {
                                                   $.messager.show({
                                                     title: '提示',
                                                     msg: data.message
                                                   });
                                                 }
                                               },
                                               error: function(XMLHttpRequest, textStatus, errorThrown) {
                                                 $.messager.show({
                                                   title: '提示',
                                                   msg: '系统错误,请联系开发人员.或刷新当前页面,重新操作。'
                                                 });
                                               }
                                       });
                                     }
                                          location.reload();
                                    }else{
                                            map.removeOverlay(circle)
                                    }
                          })
                          }
                      var circleMenu=new BMap.ContextMenu();
                      circleMenu.addItem(new BMap.MenuItem('删除',removecircle.bind(removecircle))); // 圆上右键删除
                        circle.addContextMenu(circleMenu);// 添加右键菜单

                      }
                  },
                  

 

 

 继续完善就可以了!

 

时间: 2024-09-14 06:22:20

百度地图 画圆 删除标注的相关文章

JS代码实现百度地图 画圆 删除标注_javascript技巧

把下面这段代码复制到百度地图的demo中运行,效果就是我想设计的效果. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-sc

百度地图API 小区等标注不可触碰

问题描述 百度地图API 小区等标注不可触碰 这是正常显示的,鼠标触碰后 是这个样子的,怎么样才能不让这些标注被触碰 解决方案 // 删除标注 function removeMarker(){ var selector = document.getElementById(""markers""); var item = selector.options[selector.selectedIndex].value; maplet.removeOverlay(marke

百度地图排名优化及标注

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在前几个星期有一个老朋友问我为什么他竞争对手的百度地图排名上多个几个商户名子,我看了一下原来是百度地图已经改版为百度地图本地商户中心并免费开放标注位置服务.然后我就去了解了一下标注方式,下面就为大家介绍一下. 百度地图标注,是专门服务于本地商户的一种新型营销模式,你可以在百度地图自主管理您的详情页面,丰富营业信息,让客户全方位了解您并找到你.

"翔计划"新举措百度地图免费让中小企业标注

[赛迪网讯]自2011年百度联合工信部发布"翔计划"以来,这一高达30亿元的营销帮扶计划已在全国十余省市落地实施,成为倍受中小企业主欢迎和认可的新生产力引擎.近日,"翔计划"再推新举措,面向全国中小企业免费开放百度地图标注服务. 记者获悉,这是百度首次将其网络地图平台免费开放,旨在进一步为中小企业提供更强有力的网络营销支持.据了解,凡新签约百度推广的企业均可在百度地图上标注自身企业内容,展示公司名称.地址.联系方式.交通等信息.网民在百度上进行搜索时,还将会直接在搜

百度地图api-百度地图如何只删除或隐藏覆盖物的标签文字

问题描述 百度地图如何只删除或隐藏覆盖物的标签文字 百度地图如何只删除或隐藏覆盖物的标签文字,不删除覆盖物,只删除标签文字 比如这张图片里面有个覆盖物,针对这个覆盖物加了个文字框,要把建京大厦这个文字框隐藏了 解决方案 可以加QQ说 826180082 解决方案二: 百度地图中的覆盖物百度地图覆盖物 解决方案三: // 将底图标注设置为隐藏,方法如下: mBaiduMap.showMapPoi(false) 解决方案四: 不知是不是要这种效果 解决方案五: 比如这张图片里面有个覆盖物,针对这个覆

removeoverlay-调用百度地图的removeOverlay函数不能清除标注

问题描述 调用百度地图的removeOverlay函数不能清除标注 function deletePoint(m,n){ var marker = new BMap.Marker(new BMap.Point(m, n)); map.removeOverlay(marker); alert("shanchu"); } 我从MFC调用deletePoint函数,传的m,n为我要删除的标注的经纬度信息,运行后可以打印"shanchu",说明我成功调用了函数,但是为什么不

百度地图排名优化-百度地图里面的LBS营销秘笈

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 百度地图对于混迹于搜索营销界的同仁来说不算什么新鲜事物.经常能够在各个QQ群里碰见这样的提问"百度地图怎么标注?""现在百度地图还能不能标注?""谁知道百度地图的排名优化规则?" 如果你还是简简单单的回复,"百度地图现在不能标注了,以前可以."那么你OUT了.百度

百度地图 定位 标注-IOS 百度地图 标注删除不了?求求大神啊 拜托了

问题描述 IOS 百度地图 标注删除不了?求求大神啊 拜托了 if (!_perList) { _perList=[[PersonalViewController alloc]init]; [self becomeFirstResponder]; CGFloat y=CGRectGetMaxY(_toolBar.frame); CGRect popFrame=CGRectMake(10, y, self.view.frame.size.width-20, self.view.frame.size

【百度地图API】除夕夜,大家一起来赶走“夕”——删除标注功能

原文:[百度地图API]除夕夜,大家一起来赶走"夕"--删除标注功能 任务描述: 农历12月31日是中国传统的节日--除夕.你知道除夕是怎么来的麼? "夕"在中国古代神话中,可是一个专吃小孩的怪兽呢!所以,我们过春节时要放鞭炮吓走"夕",以求平安. 那让我们一起来除掉那些红色的"夕"吧!   如何实现: 方法一.给地图增加一个事件监听,addEventListener,当右击地图时,出现右键菜单,可删除标注. 方法二.给标注增