index.html
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>图层 - 聚合图层-列表展示聚合点位数据</title>
<link rel="icon" href="/examples/static/resource/image/favicon.png" />
<style type="text/css">
html,body{margin:0px;height:100%;width:100%}
.container{width:100%;height:100%}
#status{position:fixed;left:0px;top:0px;width:100%;height:140px;overflow:hidden;z-index:1000}
#status div{background-color:rgba(13, 13, 13, 0.5);width:100%;height:100%;padding:10px 10px 10px 10px;font:13px bold sans-serif;color:#fff;overflow:auto}
</style>
<link rel="stylesheet" href="//rd.sz-map.com/libs/gm/gl/gl.min.css">
<script type="text/javascript" src="//rd.sz-map.com/libs/gm/gl/gl.min.js"></script>
<body>
<div id="map" class="container"></div>
<div id="status"></div>
<script>
function initMap() {
this.map = new GL.Map('map', {
center: '120.650847,31.3092434',
zoomControl: false,
scaleControl: false
});
var crs = {"resolutions":[0.0009765664903423653,0.0004882832451711827,0.00024414162258559134,0.00012207081129279567,0.00006103540564766688,0.000030517702822564394,0.000015258851412551242,0.000007629425705006574,0.000003814712853772333,0.00000190735154359766],"origin":"119.75,32.25"};
var options = {"maxBounds":"119.89,30.75;121.406,32.08","preview":"/examples/static/images/preview.png"};
var baseLayer = GL.LayerLookup.createGaeaTiledLayer(
'http://119.3.130.139/tiles/vector_pc/_alllayers',
Object.assign({}, options, {zIndex: 3}),
crs
);
this.map.addBaseLayer(baseLayer);
addLayer();
}
function addLayer() {
var lngLats = generate(500);
var points = lngLats.map(function (lnglat) {
return new GL.Point(lnglat);
});
this.vectorLayer = new GL.ClusterLayer('clusterlayer', { spiderfyOnMaxZoom: false });
this.map.addLayer(this.vectorLayer);
this.vectorLayer.addOverlays(points);
this.vectorLayer.on('clusterclick', function (e) {
// 可以在这里根据 zoom 来限制是否展示列表
let overlyas = e.layer.getOverlays()
console.log(overlyas);
let ids = overlyas.map(o => o.id)
ids.unshift(`共${ids.length}个点位:`)
document.getElementById('status').innerHTML = '<div>' + ids.join('<br>') + '</div>';
});
}
function generate(num) {
var list = [];
for (var i = 0; i < num; i++) {
var lng = 120.38105869 + Math.random() * 0.5;
var lat = 31.10115627 + Math.random() * 0.5;
list.push([lng, lat]);
list.push([lng, lat]);
}
return list;
}
GL.init(initMap, '/examples/static/conf.json');
</script>
</body>
</html>