我在Firefox中使用OpenLayers中的一个相当大的(加拿大)GML矢量图层存在性能问题。我的网站使用JavaScript/PHP。创建该层这样的:如何根据OpenLayers中的缩放来简化GML矢量图层?
map.addLayer(new OpenLayers.Layer.Vector(openlayers_gml_layer_canada_bv, {
strategies: [ new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: "./images/GML/BV - Canada.gml",
format: gml_format
}),
styleMap: RegionsStyles,
visibility: false
}));
我签到处和给出的解决方案里添加此行来选择渲染:
OpenLayers.Layer.Vector.prototype.renderers = ["SVG2", "VML", "Canvas"];
它拖动时帮助拖放但是当我放开它,它会加载3-5秒(所以它在落后整个时间之后落后了一个大球,但仍然落后很多)。
另一个答案是要么简化矢量,要么用GeoServers处理OpenLayers以外的图块。
我想尽可能简化我的向量,但我不知道如何正确实现OpenLayers的简化方法。你有关于如何简化我的图层的想法吗?
我的代码(map.addLayer ...)是一个函数,我添加了所有的矢量地图。其他人并不落后,因为他们更简单。有没有简单的方法?我是否必须循环使用我的功能来简化每个功能?如果是的话,我怎么能改变我的功能之前实际上加载它们在地图上(所以它不会滞后)?
这将是完美的,如果我可以根据缩放级别简化地图。因此,如果距离很远(如果我看到加拿大全部),我希望图层更加简化,如果放大,我会减少图层(因为屏幕上的矢量更少,并且在某些时候完全停滞)。
非常感谢大家。我希望我的问题很清楚。
非常感谢! –