天地图添加点聚合以及点信息

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>天地图添加点聚合以及点信息</title>
    <script type="text/javascript" src="http://api.tianditu.com/api?v=4.0&tk=秘钥"></script>
    <script>
        var map,control;
        function onLoad() {
            // 初始化地图对象
            map = new T.Map('mapDiv');
            // 设置显示地图的中心点和级别
            map.centerAndZoom(new T.LngLat(117.985096, 37.3801), 8);


            // 允许鼠标滚轮缩放地图
            map.enableScrollWheelZoom();

/*
            //添加鹰眼控件
            var miniMap = new T.Control.OverviewMap({
                isOpen: true,
                size: new T.Point(150, 150)
            });
            map.addControl(miniMap);
 */
            // 创建比例尺控件对象
            var scale = new T.Control.Scale();
            // 添加比例尺控件
            map.addControl(scale);


            // 创建缩放平移控件对象
            control = new T.Control.Zoom();
            // 添加缩放平移控件
            map.addControl(control);
            control.setPosition(T_ANCHOR_TOP_RIGHT);


            // 创建标记图片对象(支持更换图标)
            var icon = new T.Icon({
                iconUrl: "http://api.tianditu.com/img/map/markerA.png",
                iconSize: new T.Point(19, 27),
                iconAnchor: new T.Point(10, 25)
            });

            // 后台要传来的json数据(测试数据)
            var jsonStr = "[{'longitude':'117.976101','latitude':'37.418297','address':'滨州','code':'yykj','waterRight':'1300','waterConsumption':'620','state':'0'},{'longitude':'117.985650','latitude':'37.379740','address':'a区','code':'xdgj'}]";

            // json串转json对象
            var json = eval('(' + jsonStr + ')');

            var marker,content;
            // 循环获取json数据
            for (var i = 0; i < json.length; i++) {
                // 创建标注
                marker = new T.Marker(new T.LngLat(json[i].longitude,json[i].latitude),{icon: icon});
                // 准备标注信息
                content = "点击信息";

                // 将标注添加到地图中
                map.addOverLay(marker);
                // 为标注添加点击事件
                addClickHandler(content,marker);

            }

            function addClickHandler(content,marker){
                // 为标注添加点击事件
                marker.addEventListener("click",function(e){
                    openInfo(content,e);
                }
            );}

            function openInfo(content,e){
                // 获取标注的经纬坐标
                var point = e.lnglat;
                // 创建标注
                marker = new T.Marker(point);
                // 创建信息窗口对象
                var markerInfoWin = new T.InfoWindow(content,{offset:new T.Point(0,-20)});
                // 开启信息窗口
                map.openInfoWindow(markerInfoWin,point);

            }
        }

    </script>
</head>
<body onLoad="onLoad()">
<div id="mapDiv" style="position:absolute;width:1400px; height:500px"></div>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
百度地图JavaScript API GL提供了一个MarkerClusterer类,可以用于聚合,具体步骤如下: 1.引入MarkerClusterer库文件 在HTML文件的head标签中添加如下代码: ```html <script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></script> ``` 2.创建MarkerClusterer对象 ```javascript var markerClusterer = new BMapLib.MarkerClusterer(map, options); ``` 其中,map是百度地图实例,options为MarkerClusterer的配置项,包括以下属性: - markers:要进行聚合的标记数组 - girdSize:聚合计算时网格的像素大小,默认60 - maxZoom:最大的聚合级别,大于该级别就不进行聚合操作,默认18 - minClusterSize:最小的聚合数量,小于该数量的不进行聚合操作,默认2 - styles:自定义聚合后图标的样式数组 3.将标记添加到MarkerClusterer中 ```javascript markerClusterer.addMarkers(markers); ``` 其中,markers为标记数组。 完整示例代码: ```html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>百度地图JavaScript API GL聚合示例</title> <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=你的密钥"></script> <script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></script> </head> <body> <div id="map" style="width:100%;height:500px;"></div> <script type="text/javascript"> // 初始化地图 var map = new BMap.Map("map"); map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 创建标记数组 var markers = []; for (var i = 0; i < 100; i++) { var point = new BMap.Point(Math.random() * 0.1 + 116.3, Math.random() * 0.1 + 39.9); var marker = new BMap.Marker(point); markers.push(marker); } // 创建MarkerClusterer对象 var markerClusterer = new BMapLib.MarkerClusterer(map, { markers: markers }); // 添加标记到MarkerClusterer中 markerClusterer.addMarkers(markers); </script> </body> </html> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值