1

我想重绘一个 OpenLayers 向量。

我的html按钮:

<button id="refresh" type="button">Refresh</button>

和我的 jquery 函数来重绘图层,刷新函数中的 parksLayer 记录为 false:

function refresh() {
    parksLayer.redraw(true);
}

function bind(){
    $("#refresh").bind("click", refresh);
}

和我的地图,我想重绘 ParksLayer:

        map = new OpenLayers.Map({
            div: "map",
            layers: [
                new OpenLayers.Layer.OSM(),
                parksLayer
            ]
        });

更新

感谢您的帮助,我的矢量图层定义如下:

function changeme(avalue){
        parksLayer = new OpenLayers.Layer.Vector("Parks", {
            projection: new OpenLayers.Projection("EPSG:4326"),
            strategies: [new OpenLayers.Strategy.Fixed()],
            protocol: new OpenLayers.Protocol.Script({
                url: "http://my.cartodb.com/api/v2/sql",
                params: {
        q: "SELECT * FROM activities where type_code is not null"+" "+avalue,
        format: "geojson"
    },
                format: new OpenLayers.Format.GeoJSON({
                    ignoreExtraDims: true
                }),
                callbackKey: "callback"
            }),
        });  
    }

我有一个avalue动态变化的表单,它会改变 GeoJSON 查询,所以如果我可以重绘 parksLayer,我会从图层中得到一个新的选择。

4

3 回答 3

3

我也有 redraw() 的问题并使用它。

VecLayer.redraw(true);
VecLayer.refresh({force: true});
于 2012-08-10T08:25:55.267 回答
3

如果我阅读 Openlayers API,redraw 函数不使用任何参数...您应该尝试调用 redraw() 而不将“true”作为参数...

Openlayers API: redraw: function() 重绘图层。如果图层被重绘,则返回 true,否则返回 false。

问候

艾蒂安

于 2012-08-06T17:43:14.110 回答
1

这是一个 KML 格式,但正如您所见,它很容易适应

   var refresh = new OpenLayers.Strategy.Refresh({force: true, active: true});

   var protocol = new OpenLayers.Protocol.HTTP({
         url: "http://my_data.source.com",
            format: new OpenLayers.Format.KML({
                  extractStyles: false,
                  extractAttributes: true
               })
            });

   mylayer = new OpenLayers.Layer.Vector("MyLayerName", {
            strategies: [new OpenLayers.Strategy.Fixed(), refresh],
            protocol: protocol
   });

然后重绘/重新下载数据:

refresh.refresh();
于 2012-10-29T14:17:19.493 回答