问题:
公司的项目需要在地图上显示上万个覆盖物(实际最多会有两万多个,后面提到的聚合点加载时间都以两万个点为准)。
其实在正常生成聚合点的过程并不会很慢(500ms左右),但是在聚合点生成后,用户如果操作地图(缩放、移动等),就会出现卡顿现象,这也是一开始发现的问题。在后续的优化过程中还发现另外两个问题,如果在加载聚合点之前,用户对地图进行过操作,加载聚合点就会变得非常缓慢(1000ms以上),同时,每次删除聚合点在重新添加都会比上一次慢
解决方案:
直接说解决方案,把项目中引入的MarkerClusterer文件替换成官方github最新的那个就行,文件地址。
实测首次加载仅需100ms左右,且没有上面提到的其它问题出现,同时,如果屏幕可见范围内的点位较少时,加载时间也会相应缩短。
本来在后续优化过程中发现另外两个问题后,就觉得应该从源码入手解决,结果上github clone了源码,引入后发现就没问题了。原先引入的是这个代码,这个是旧版本的代码,看了一下git记录,其实2017/12/4就已经有优化了,但是有些老项目可能还在使用旧版本的MarkerClusterer。甚至是新项目在cv代码时也不小心引入了旧版本的MarkerClusterer。