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