源码发现
‘壹’ 百度地图聚合功能自定义聚合文字
研究网络地图聚合源码发现,如果打算自定义文字需要修改两处:
一、修改 BMapLib.MarkerClusterer.js 插件中 Cluster.prototype.updateClusterMarker 方法,实现过程如下:
方法中: this._clusterMarker.setText(this._markers.length); 表示, 聚合点显示的文字内容是 当前 Cluster 类 _markers 属性 的 长度;
二、修改 TextIconOverlay.js 中的 构造方法 和 样式方法
查看 TextIconOverlay.js 的源码发现, text 只支持 数字类型的值,而且和 styles 属性绑定,需要修改constructor 方法, 和 设置属性的方法。
如上,知道了聚合的文字是 Cluster.prototype.updateClusterMarker 方法 , 那么我们需要进行以下步骤:
通过查看网络地图聚合源码,发现 Cluster 类调用了 marker 的 getPosition 和 getMap 方法,我们需要自定义这俩方法如下:
最终,我们实现了自定义 网络地图点聚合文字 信息。
附Github: https://github.com/sphenginx/vue-slider
类 BMapLib.MarkerClusterer
‘贰’ java查看hashmap的源码发现并没有向entrySet中装入元素,而去可以如下遍历。
帮助文档上说:返回此映射所包含的映射关系的
collection
视图。在返回的集合中,每个元素都是一个
Map.Entry。
entrySet仅仅是一个视图而已,没有具体的数据,其实还是从HashMap中获取数据的。具体可以看entry和entrySet的源代码就知道数据其实还是来自于table。
‘叁’ 在chrome上看源代码发现如::before,不知道什么意思
我也发现这个问提了,搜索后发现都是在说css的,但是它是出现在HTML代码里的。
然后我自己写例子试了试,结果是 在css里面用 ::before,
是浏览器的代码查看器把它显示成::before了。
下面是自己写的源码
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Title</title>
<style>
#test::before{
content:'bb';
}
</style>
</head>
<body>
<divid="test">
aa
</div>
</body>
</html>
这是浏览器查看器的画面
而且冒出来一个这个玩意,原理不懂,
不过,在浏览器的查看器里看到的 ::before 是这么来的。