我知道Google是地图技术的巨头,因此投入了大量资金进行系统开发,所以它更快并不奇怪。我只是想知道如何做到这一点,如果可能的话。
谢谢!
通过 OL API 放置在地图上的任何标记/几何图形都必须下载到浏览器中,然后在浏览器内存中呈现。
如果您有许多几何图形要呈现在地图上,可以使用仅包含这些几何图形的额外图像层。您可以使用类似 Geoserver 的 WMS 来实现这一点。Geoserver 与 OpenLayers 非常兼容,并且是一个非常快速的 WMS。因此,您可以将公共背景层(如 OSM 或 GoogleMaps)与自己的 WMS 层组合起来。
这种方法可能不适用于可点击的标记,但在显示任何绘制的几何图形(如多边形等)时,可以提高速度。
祝好,史蒂夫
我猜你正在使用OpenLayers.Strategy中的某个类,比如Filter或Cluster,来减少实际显示的标记数量?我没有使用过Google地图,但听起来标记管理器做了同样的事情。最终,当涉及到渲染大量dom对象时,这两个库都受到相同的浏览器限制。
Google Maps和Open Layers只是浏览器客户端的JS框架,这不应该有太大的区别。我认为是Google Maps服务器基础设施更加有效。此外,Marker Manager并不是一个很好的软件(它不是开源爱好者的解决方案吗?)虽然它是JS和客户端,但我使用了空间填充曲线来打造自己的集群管理器,它运行得相当不错。我敢打赌它比Marker Manager更好,因为网络上还有其他的集群解决方案,对我来说它们更好。
我曾经遇到过与deCarta相同的问题,当有大约800个带有气泡的标记元素时,浏览器会变慢。我向Krishna Vanka(他已不在deCarta工作)询问了此事,但没有得到任何解决方案,因此我们通过缩放参数和坐标绘制元素以及缓存屏幕外元素来构建了一个新的过滤器,这样我们就可以在内存中获得大约2000个标记。当然,这不是最好的方法,但它有效。
我们系统(GPS WebApp)中的问题在于几何图形和标记是由用户绘制的,因此额外的图像层不是可能的选择。