我在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 ...)是一個函數,我添加了所有的矢量地圖。其他人並不落後,因爲他們更簡單。有沒有簡單的方法?我是否必須循環使用我的功能來簡化每個功能?如果是的話,我怎麼能改變我的功能之前實際上加載它們在地圖上(所以它不會滯後)?
這將是完美的,如果我可以根據縮放級別簡化地圖。因此,如果距離很遠(如果我看到加拿大全部),我希望圖層更加簡化,如果放大,我會減少圖層(因爲屏幕上的矢量更少,並且在某些時候完全停滯)。
非常感謝大家。我希望我的問題很清楚。
非常感謝! –