百度 地图和高德地图 单击标注打开完全自定义的悬浮窗口

本文介绍了如何在百度地图和高德地图上,通过单击标注点来打开一个完全自定义的悬浮窗口。内容涉及地图API的使用,自定义窗口的布局设计以及交互逻辑的实现,帮助开发者提升地图应用的用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        <div class="col-md-10 col-sm-10 col-xs-12" style="border: 1px solid #fff;margin-top: 3%">
          <div style="width:100%;height: 700px;" id="allmap"></div>
        </div>
$(function(){
// 百度地图API功能
var map = new BMap.Map("allmap"); // 创建Map实例
map.centerAndZoom(new BMap.Point(114.342913,38.048293), 17); // 初始化地图,设置中心点坐标和地图级别
//添加地图类型控件
map.addControl(new BMap.MapTypeControl({
  mapTypes : [ BMAP_NORMAL_MAP, BMAP_HYBRID_MAP ]
}));
map.setCurrentCity("石家庄"); // 设置地图显示的城市 此项是必须设置的
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放 
createMakers(map); });
function createMakers(map) {
  $.ajax({
        url: '', //请求地址
        type: "get", //请求方式
        dataType: 'jsonp', //指定jsonp数据类型
        async: false,
        success: function(data) {
          var dataObj = data;
          var light_data = null;
          var light_imei = null;
          let points = [];
          var pointArray = [];
          //循环后台数据
          for (var i = 0; i < dataObj.length; i++) {

            var databl = []; 
            var datarray  = [];
             //设备id
             databl["device_id"] = dataObj[i].device_id;
            //经纬度海拔
            databl ["light_imei"] = dataObj[i].light_imei;

            light_data = dataObj[i].light_data;

            for (var j = 0; j < light_data.length; j++) {
              databl["brightness"]=light_data[j].brightness;
              databl["power_a"]=light_data[j].power_a;
              databl["power_p"]=light_data[j].power_p;
              databl["power_v"]=light_data[j].power_v;
              databl["power_w"]=light_data[j].power_w;
              databl["lux"]=light_data[j].lux;
            }
            points.push(databl);}

        // 向地图添加标注
    for (var i = 0; i < points.length; i++) {(function (x) {
                       var point = new BMap.Point(points[x].light_imei.lng,points[x].light_imei.lat);    // 创建点坐标
                       map.centerAndZoom(point, 17);
                       var marker=new BMap.Marker(point,{icon:new BMap.Icon("./images/08.png", new BMap.Size(24, 24))});
                       var label = new BMap.Label(points[x].device_id,{offset:new BMap.Size(20,-10)});
                         label.setStyle(  {display:"none"});//对label 样式隐藏     marker.setLabel(label);  //把label设置到maker上  
                       var opts = {
                           title: '<div style="background-color: #00D1FF;color:#fff"> 路灯信息</div>'   // 信息窗口标题
                         }
                       //marker.setAnimation(BMAP_ANIMATION_BOUNCE);
                       var content = '<table><tr><td>编号:0'+[x+1]+'</td><td>亮度:'+points[x].brightness+'</td></tr><tr><td>电压:'+points[x].v+'</td><td>电量:'+points[x].p+'</td></tr><tr><td>功率:'+points[x].w+'</td><td>电流:'+points[x].a+'</td></tr></table>';
                       var info_Window = new BMap.InfoWindow(content, opts);  // 创建信息窗口对象

                       //鼠标点击标注要发生的事情
                       marker.addEventListener("click",attribute);

                         // 鼠标移上标注点要发生的事
                         marker.addEventListener("mouseover", function () {
                          this.openInfoWindow(info_Window);
                        });

                        // 鼠标移开标注点要发生的事
                        marker.addEventListener("mouseout", function () {
                          this.closeInfoWindow(info_Window);
                        });
                        map.addOverlay(marker);
                      })(i);
                    } 
                    map.addControl(new BMap.NavigationControl());

                    function attribute(e){
              var tag=e.target.getLabel().content; //点击maker点后获取label里面的内容

              var divNode = document.getElementById("light");
              divNode.style.display = "block"; 
              test (tag);
            }  

          }
        });
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值