JavaScript多点(点对象相离比较近)聚散点堆叠
图1 :这个是地图上的聚合显示效果
图2 : 这个是地图放大到最大级别的那三个点显示的效果,这样显示的话,触发点击事件的时候就不好操作(点击)了。
如果业务系统里提供的这样的地图数据比较多的时候有什么好办法解决
嗯,没什么好的办法,服务端倒是有标签自动避让,点的自动避让没有。 有个思路,实现比较麻烦
clusterLayer.events.on({"clusterend":function(e){ //e包含了聚散完成所需要的信息,其结构如下e={clusterPoints:[],displayedPoints:[],element:null,object:null,type:"clusterEnd"} //其中,clusterMaps是包含了聚散点映射关系集合,clusterPoints[i]则表示第i个聚散点映射关系,其类型为{SuperMap.Feature.Vector},其内的children属性包含有对应的实际点坐标 //而displayedPoints则是用户所设定的某一范围内不需要被聚散的点集合 }});
自己去得到散开后具体的点,判断两点距离(http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/apidoc/files/SuperMap/Geometry/Point-js.html#SuperMap.Geometry.Point.distanceTo),小于某个值就修改下点坐标(修改原对象)、重绘图层。就是移动点的逻辑麻烦点。 没啥好办法,图层也不支持挡住的要素不显示(挡住就不显示这个自己实现起来简单些,但应该不是你们要的效果),建议还是处理下数据(桌面软件iDesktop里),直接把点挪到合适的位置。