百度地图根据缩放级别显示不同的marker点和窗口内容

<script type="text/javascript">

var markers = [];

      $(document).ready(function() {
          getdata();
          initMap();//显示地图
          setInterval("frash()", 1000); //定时器,每3秒调用frash()
          
      });
      function getdata() {
        markers=transArr({$list|json_encode=true});
        school_markers = transArr({$school_list|json_encode=true});
        console.log(school_markers);
      }


      function transArr(obj) {  
        var tem=[];  
        $.each(obj, function(i) {  
            tem[i]=obj[i];  
        });  
        return tem;  
    }


  </script>
    <script type="text/javascript">
      //创建和初始化地图函数:
      function initMap() {
          //alert("111"+markers[0].lat);
          createMap();//创建地图
          setMapEvent();//设置地图事件
          addMapControl();//向地图添加控件
          addMapOverlay();//向地图添加覆盖物
      }
      function createMap() {
          map = new BMap.Map("map"); //建树Map实例
          map.centerAndZoom(new BMap.Point(110.337, 35.316), 6);// 建树点坐标,初始化地图,设置中心点坐标和地图级别。


          map.setMapStyle({
              styleJson: [{"featureType": "highway","elementType": "all","stylers": {
                  "visibility": "off" 
                }
            }]
        });




  
     }
     function setMapEvent() {
         map.enableScrollWheelZoom();//启用地图滚轮放大缩小
         map.enableKeyboard();//启用键盘上下左右键移动地图
         map.enableDragging(); //启用地图拖拽事件,默认启用(可不写)
         map.enableDoubleClickZoom()//启用鼠标双击放大,默认启用(可不写)
     }
      //点击事件
        function addClickHandler(html,marker){  
            marker.addEventListener("click",function(e){  
            openInfo(""+html,e)});  
        } 


    function frash() {
        map.clearOverlays();//清空地图上标注点
        getdata(); //获得marker点的数组
        addMapOverlay(); //将marker点的信息显示在地图上
        markers.splice(0, markers.length);//清空数组
    }
    //设置点Icon
     function addMapOverlay() {
        var u = map.getZoom(); // 定义地图缩放等级的变量
        console.log(u);
         if (u <= 5) {   // 如果缩放等级小于等于5
             //把marker点的信息显示在地图上
            for (var index = 0; index < markers.length; index++) {
                //var point = new BMap.Point(markers[index].lng,markers[index].lat);
                var p0 = markers[index].lng;
                var p1 = markers[index].lat;
                console.log("p0:"+p0);
                var point = new BMap.Point(p0, p1);
                var myIcon = new BMap.Icon("__STATIC__/image/room_position.png",new BMap.Size(40,40));    //assets/img/ict-mem04.png
                var marker = new BMap.Marker(new BMap.Point(p0,p1), { icon: myIcon });               
                var html = [];
                    html.push('<ul style="table-layout:fixed;width:100%;font:15px arial,simsun,sans-serif">');
                    html.push('<li style="width:100%;list-style:none;height:30px;border-bottom:1px solid #DADADD;position:relative" id="mark_info"><span style="position:absolute;">地址:'+markers[index].zone_name+'</span></li>');
                    
                    html.push('<li style="width:100%;list-style:none;padding-top:10px;padding-bottom:10px;border-bottom:0px solid #DADADD"><span style="position:absolute;">数量:'+markers[index].count+'</span></li>');
                                      
                    // html.push('<li style="width:100%;list-style:none;padding-top:10px;padding-bottom:10px;">商户地址:'+this.nearshoplist[i].address+'</li>');
                    html.push('</ul>'); 
                    var html = html.join("");
                    //console.log(html);


                    map.addOverlay(marker);               // 将标注添加到地图中
                    addClickHandler(html,marker);
             }
        //地图缩放等级大于5不显示marker点
            }else{
                 //把marker点的信息显示在地图上
            for (var i = 0; i < school_markers.length; i++) {
                //var point = new BMap.Point(markers[index].lng,markers[index].lat);
                var p0 = school_markers[i].lng;
                var p1 = school_markers[i].lat;
                console.log("p0:"+p0);
                var point = new BMap.Point(p0, p1);
                var myIcon = new BMap.Icon("__STATIC__/image/red_icon.png",new BMap.Size(40,30));    //assets/img/ict-mem04.png
                var marker = new BMap.Marker(new BMap.Point(p0,p1), { icon: myIcon });               
                var html = [];
                    html.push('<ul style="table-layout:fixed;width:100%;font:15px arial,simsun,sans-serif">');
                    html.push('<li style="width:100%;list-style:none;height:30px;border-bottom:1px solid #DADADD;position:relative" id="mark_info"><span style="position:absolute;">地址:'+school_markers[i].school_name+'</span></li>');
                    
                    html.push('<li style="width:100%;list-style:none;padding-top:10px;padding-bottom:10px;border-bottom:0px solid #DADADD"><span style="position:absolute;">数量:'+school_markers[i].school_name+'</span></li>');
                                      
                    // html.push('<li style="width:100%;list-style:none;padding-top:10px;padding-bottom:10px;">商户地址:'+this.nearshoplist[i].address+'</li>');
                    html.push('</ul>'); 
                    var html = html.join("");
                    //console.log(html);


                    map.addOverlay(marker);               // 将标注添加到地图中
                    addClickHandler(html,marker);
             }
            }


     }


     //生成窗体
        function openInfo(html,e){  
            var p = e.target;  
            console.log("lng:"+p.getPosition().lng);
            console.log("lat:"+p.getPosition().lat);
            var opts = {
                    width : 100     // 信息窗口宽度
                    //height: 80,     // 信息窗口高度
                    //title : "信息窗口" , // 信息窗口标题
                   // enableMessage:true//设置允许信息窗发送短息
            };
            var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);  
            var infoWindow = new BMap.InfoWindow(html,opts);  // 创建信息窗口对象   
            map.openInfoWindow(infoWindow,point);                //开启信息窗口  
        }


     //向地图添加控件
    function addMapControl() {
        var scaleControl = new BMap.ScaleControl({
            anchor : BMAP_ANCHOR_BOTTOM_LEFT
        });
         scaleControl.setUnit(BMAP_UNIT_IMPERIAL);
         map.addControl(scaleControl);
         var navControl = new BMap.NavigationControl({
             anchor : BMAP_ANCHOR_TOP_LEFT,
            type : BMAP_NAVIGATION_CONTROL_LARGE
         });
         map.addControl(navControl);
         var overviewControl = new BMap.OverviewMapControl({
            anchor : BMAP_ANCHOR_BOTTOM_RIGHT,
            isOpen : true
         });
         map.addControl(overviewControl);
     }
     var map;
    //  initMap();
百度地图API提供了一系列功能,可以将位置信息在地图上可视化显示。具体来说,通过百度地图的开发接口,你可以将特定的经纬度坐标标注在地图上,这对于实现定位服务、地理信息展示等应用场景非常有用。开发者可以使用百度地图提供的各种标记物(Marker)来表示位置,同时还可以为这些标记添加自定义的信息窗口(InfoWindow)来显示更详细的信息。 实现这一功能的基本步骤通常包括以下几个方面: 1. 获取百度地图API的密钥,并在项目中引入百度地图的JavaScript API库。 2. 在页面中创建一个地图容器,通常是一个`<div>`元素。 3. 使用`BMap.Map`类初始化地图,并设置地图的中心坐标和缩放级别。 4. 使用`BMap.Marker`类创建一个标记物,并指定其经纬度坐标。 5. 将标记物添加到地图对象中。 6. 如有需要,可以创建并设置信息窗口内容。 以下是一个简单的代码示例,展示如何在百度地图显示一个标记: ```javascript // 初始化地图 var map = new BMap.Map("container"); // 设置地图中心坐标 map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 创建标记 var marker = new BMap.Marker(new BMap.Point(116.404, 39.915)); // 将标记添加到地图实例中 map.addOverlay(marker); // 打开信息窗口 var infowindow = new BMap.InfoWindow("这是一个标记"); marker.openInfoWindow(infowindow); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值