百度地图提供了默认的Marker作为默认的点标记,或者叫图像标注。除了位置,还支持设置图像Icon,来达到自定义效果。但这个显然比较有限,我们需要更加负责的覆盖物(Overlay)来展示点要素。
本文提供了一种自定义覆盖物,命名为ClusterMarker,类似是一种较为复杂的标记。它除了支持常规的位置(Point),还可以设置文字(Text)和风格(Style),而在Text和Style之间会有一定的映射关系,不同的Text对应不同的Style。而映射关系的接口,同样予以开放,可自行设置。
构造函数:
ClusterMarker(point, text, opt_options):point表示位置信息;text表示文字信息;可选参数opt_options是个对象,形如{styles:myStyles,bounds:myBounds},其中styles可以设置自定义风格,如果不设置,则用默认风格(默认更个的图片取自这里);bounds是为了后面的ClusterMarkerer而设置的,比如这假设是几个点的一个聚合时,它可以表示这几个点的范围bounds。
方法接口:
getPoint() 和 setPoint(point) 用来获取和设置显示的位置。
getText() 和 setText(text) 用来获取和设置显示的文字。
getBounds() 和 setBounds(bounds) 用来获取和设置聚合点的范围,如果有的话。
getCalculator() 和 setCalculator(calculator) 用来获取和设置文字与风格之间映射关系。默认的映射关系是,把文字转换为数字,对10取整,作为对应的风格图片索引。比如text为9,对应index为0的风格;24则对应index为2的风格。
支持通过addEventListener方法添加click事件的响应。
关于ClusterMarker命名,首先体现是一种类似Marker的点标记,Cluster的意思主要是积聚,比如Text可以表示,该Point附近积聚了Text个标记等。其实,这是做百度地图版的MarkerCluster的中间产物。代码将会包含在下一篇文章“ClusterMarkerer百度地图版”中。
怎么找源码,你懂的。原文链接。