js 百度地图点聚合 自定义标注 自定义信息框

   //引入百度地图js
 <script type="text/javascript" src="//api.map.baidu.com/api?v=4.2&ak=xxxx"></script>
<link rel="stylesheet" href="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.css" />
 <script type="text/javascript" src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"></script>
    <script type="text/javascript" src="http://developer.baidu.com/map/custom/stylelist.js"></script>
//点聚合api
    <script type="text/javascript" src="http://api.map.baidu.com/library/TextIconOverlay/1.2/src/TextIconOverlay_min.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></script>
//html部分
  <div id="newmap" class="Bottom2">
//css部分

   /*百度地图样式*/

   .BMap_bubble_title {
       color: #fff;
       font-size: 18px;
       /*font-weight: bold;*/
       text-align: left;
       background: transparent !important;
   }

   .BMap_pop .BMap_top {
       background: rgba(11, 33, 98, 0.79) !important;
       border: 0 !important;
   }

   .BMap_pop .BMap_center {
       /* width: 251px !important;*/
       border: 0 !important;
       background: rgba(11, 33, 98, 0.79) !important;
   }

   .BMap_pop .BMap_bottom {
       border: 0 !important;
       background: rgba(11, 33, 98, 0.79) !important;
   }

   .BMap_pop div:nth-child(3) {
       background: transparent !important;
   }

       .BMap_pop div:nth-child(3) div {
           border-radius: 7px;
           background: rgba(11, 33, 98, 0.79) !important;
           border: 0 !important;
       }

   .BMap_pop div:nth-child(1) {
       border-radius: 7px 0 0 0;
       background: transparent !important;
       border: 0 !important;
   }

       .BMap_pop div:nth-child(1) div {
           background: rgba(11, 33, 98, 0.79) !important;
       }

   .BMap_pop div:nth-child(5) {
       border-radius: 0 0 0 7px;
       background: transparent !important;
       border: 0 !important;
   }

       .BMap_pop div:nth-child(5) div {
           border-radius: 7px;
           background: #062264 !important;
       }

   .BMap_pop div:nth-child(7) {
       background: transparent !important;
   }

       .BMap_pop div:nth-child(7) div {
           border-radius: 7px;
           background: rgba(11, 33, 98, 0.79) !important;
       }

   .BMap_pop div:nth-child(8) div {
       /*border-radius:7px;*/
       background: rgba(11, 33, 98, 0.79) !important;
   }

   /*下面箭头替换为自己本地修改过的*/
   img[src="http://api0.map.bdimg.com/images/iw3.png"] {
       content: url('../img/Screen/arrow.png');
   }

   img[src="https://api.map.baidu.com/images/iw3.png"] {
       margin-top: -692px !important;
       filter: alpha(opacity=70);
       content: url('../img/Screen/arrow.png');
   }


//js部分
var arra = []
function List() {
    arra = [
        { title: '上海殷宇文化传播有限公司', point: '121.474000,31.230001', color: '#D81E06', img: 'https://www.chuangge.vip/jh/images/hong.png' },
        { title: '上海乐兴里企业管理有限公司', point: '121.466847,31.229036', color: '#1296DB', img: "https://www.chuangge.vip/jh/images/lan.png" },
    ]
    console.log("赋值")
}
List()
// 百度地图API功能
var map = new BMap.Map("newmap");  // 创建Map实例
map.enableScrollWheelZoom(true);
map.enablePinchToZoom();
map.enableDragging();

map.addControl(new BMap.OverviewMapControl());
//var point = new BMap.Point(121.474000, 31.230001);
//map.centerAndZoom(point, 15);



// 创建点坐标
var points = arra;
console.log(arra)
var markers = [];
var pt = null;

//    [
//    { title: '标注111111111', point: '121.474000,31.230001', color: '#D81E06', img: 'https://www.chuangge.vip/jh/images/hong.png' },
//    { title: '标注22222222222', point: '121.466847,31.229036', color: '#1296DB', img: "https://www.chuangge.vip/jh/images/lan.png" },
//];

// 初始化地图, 设置中心点坐标和地图级别
var point = new BMap.Point(points[0].point.split(',')[0], points[0].point.split(',')[1]);
map.centerAndZoom(point, 5);
// 创建小车图标

// 遍历点数组,添加标注
for (var i = 0; i < points.length; i++) {
    var myIcon = new BMap.Icon(points[i].img, new BMap.Size(25, 25));
    var opts = {
        position: new BMap.Point(points[i].point.split(',')[0], points[i].point.split(',')[1]), // 指定文本标注所在的地理位置
        offset: new BMap.Size(30, -30) // 设置文本偏移量
    };
    // 创建文本标注对象
    var label = new BMap.Label(points[i].title, opts);
    // 自定义文本标注样式
    label.setStyle({
        color: '#fff',
        background: points[i].color,
        borderRadius: '5px',
        borderColor: '#ccc',
        padding: '10px',
        fontSize: '10px',
        height: '10px',
        lineHeight: '10px',
        fontFamily: '微软雅黑'
    });
    
    var marker = new BMap.Marker(new BMap.Point(points[i].point.split(',')[0], points[i].point.split(',')[1]), {
        icon: myIcon
    });
    //map.addOverlay(marker);
    pt = new BMap.Point(points[i].point.split(',')[0], points[i].point.split(',')[1]);
    markers.push(marker);

    // 可选:添加标注窗口
    addInfoWindow(map, marker, points[i].title,'', label);
}
//最简单的用法,生成一个marker数组,然后调用markerClusterer类即可。
var markerClusterer = new BMapLib.MarkerClusterer(map, { markers: markers })
// 可选:添加信息窗口函数
function addInfoWindow(map, marker, title, image, label) {
    var opts = {
        width: 250,     // 信息窗口宽度
        height: 200,     // 信息窗口高度
        title: title // 信息窗口标题
    };
    // 创建信息窗口对象
    var infoWindow = new BMap.InfoWindow(`<div style="color:#fff"><span>地址:</span><span>兴国路408号</span></div><div style="color:#fff"><span>联系人:</span><span>江晓宇</span></div><div style="color:#fff"><span>联系电话:</span><span>18355558963</span></div><div style="color:#fff"><span>行业:</span><span>物业</span></div><div style="color:#fff"><span>风险等级:</span><span>A级</span></div><input type="button" value="详情"></input>`, opts);
    // 打开信息窗口
    marker.openInfoWindow(infoWindow);

    // 监听标注对象的点击事件,打开信息窗口
    marker.addEventListener("click", function () {
        this.openInfoWindow(infoWindow);
        map.addOverlay(label);
    });
}


//此种方法添加为三种类型,地图/卫星/三维,其中切换至三维时无法显示地图,也无官方文档所说的切换城市* 不建议采用此种方法
map.addControl(new BMap.MapTypeControl());
//添加地图控件, 矢量图和卫星图。 矢量图为卫星地图+矢量标注
map.addControl(new BMap.MapTypeControl({
    mapTypes: [
        BMAP_NORMAL_MAP, //矢量图
        //BMAP_SATELLITE_MAP,//卫星图, 此选项不起作用
        BMAP_HYBRID_MAP //混合图, 卫星+矢量图中的街道和标注
    ]
}));

效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值