2011-04-09 156 views
3

我目前正在製作一個使用OpenLayers並使用BBOX策略繪製的網站。可能會有很多點在數據庫中繪製。當OpenLayers發送BBOX座標時,我希望OpenLayers發送當前縮放級別。我將使用此縮放級別來決定是發送所有結果還是最近的10個條目。當OpenLayers發送BBOX信息時,OpenLayers是否可以將當前縮放級別返回給服務器?OpenLayers通過BBOX策略找出用戶的縮放級別

+0

你有我的建議有何迴應? – 2011-04-14 11:12:01

回答

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參數計算縮放比例。

+0

我只是計算了bbox中兩點之間的距離 – user669186 2011-05-04 10:15:50

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()} 

      }); 
     }