OpenLayers使用BBOX策略找出用户的缩放级别

时间:2011-04-09 19:09:06

标签: openlayers

我目前正在制作一个使用OpenLayers并使用BBOX策略绘图的网站。可能在db中可能有很多点要绘制。当OpenLayers发送BBOX坐标时,我希望OpenLayers发送当前缩放级别。我会使用此缩放级别来决定是否应该发送所有结果或10个最近的条目。当OpenLayers发送BBOX信息时,OpenLayers是否可以将当前缩放级别发送回服务器?

2 个答案:

答案 0 :(得分:2)

不是默认情况下,但您可以覆盖triggerRead函数并自行添加缩放级别。像这样(未经测试):

OpenLayers.Strategy.BBOX.prototype.triggerRead = 
function() {
    if (this.response) {
        this.layer.protocol.abort(this.response);
        this.layer.events.triggerEvent("loadend");
    }
    this.layer.events.triggerEvent("loadstart");
    this.response = this.layer.protocol.read({
        filter: this.createFilter(),
        callback: this.merge,
        scope: this,
        params: {center: this.layer.getZoomForExtent()}
    });
}

或者,当然只是使用BBOX参数计算缩放级别。

答案 1 :(得分:0)

我测试了这个并且它有效:

        //override BBOX strategy in order to pass zoom
        OpenLayers.Strategy.BBOX.prototype.triggerRead = 
        function() {
            if (this.response) {
                this.layer.protocol.abort(this.response);
                this.layer.events.triggerEvent("loadend");
            }
            this.layer.events.triggerEvent("loadstart");
            this.response = this.layer.protocol.read({
                filter: this.createFilter(),
                callback: this.merge,
                scope: this,
                params: {zoom: this.layer.map.getZoom()}

            });
        }