我有一张地图,在某个点上我画了大约14000个标记。如果地图的边界设置为绘制标记的整个区域,则绘制标记需要很长时间(大约8秒)。但是如果我放大到一个很少/没有标记的区域,那么绘制14000个标记会非常快,比如2-3秒。
我假设这是因为最耗时的过程是实际绘制标记图标到瓦片上,而且由于标记是一次添加一个,因此地图在非常短的时间跨度内渲染了大量次。
因此,我想知道是否可以在添加图标时禁用地图更新/渲染,然后在添加所有图标后重新启用它。
欢迎任何具有类似效果的解决方案
发布于 2012-06-11 19:25:03
渲染时间缩短了,因为当你放大得更近时,api v3不会添加14000。它只添加当前边界中的标记以及围绕边缘的平铺图层缓冲区中的标记(可能是一个或两个平铺)。
我有点困惑你的意思,但也许你只想在地图加载后才添加标记:
google.maps.event.addListenerOnce(map,'tilesloaded',addMarkersFunction);尽管如此,14000个标记是一个很大的标记。当你有这么多标记时,聚类标记甚至不再是我认为可选的。
发布于 2012-06-11 19:18:50
是的,您可以创建许多标记,而不是将它们与地图相关联。然后,对它们调用setMap()函数。
您也只能在当前范围内执行此操作。
您是否考虑过通过标记聚类来减少标记的数量?
对于查看您的代码会很有用。
发布于 2012-06-11 21:25:10
尝试在Google Maps API v3 Utility Library中使用MarkerManager库。它就是为这样的问题而设计的。虽然在文档方面没有太多内容,但在源代码中有几个有用的示例和大量注释。
https://stackoverflow.com/questions/10978053
复制相似问题