当我向北移动时,地图会熄灭,我会看到HTML的白色背景。我想垂直平移,地图在到达顶部(或分别为底部)时阻止。
我试图设置边界,但是这个解决方案也是水平限制。我希望能够向左或向右无限地平移,但是可以上下限制平移。
我怎么能这样做?
由于
编辑1: 我倾向于不扩展OpenLayers核心。我希望解决方案涵盖所有平移,拖动,缩放案例。我认为,一般解决方案都没问题。我听说地图初始化中有一个选项,只能垂直限制范围。你对此有所了解吗?
答案 0 :(得分:0)
我通过覆盖OpenLayers.Control.PanZoom的buttonDown函数来完成此操作,该函数以这样的方式开始:
buttonDown: function (evt) {
if (!OpenLayers.Event.isLeftClick(evt)) {
return;
}
switch (this.action) {
case "panup":
this.map.pan(0, -this.getSlideFactor("h"));
break;
switch (this.action) {
case "pandown":
this.map.pan(0, this.getSlideFactor("h"));
break;
... etc
所以不是这样,你可以这样做:
OpenLayes.Control.PanZoom.prototype.buttonDown = function (evt){
if (!OpenLayers.Event.isLeftClick(evt)) {
return;
}
//get map bounds
var mapBounds=map.getExtent();
switch (this.action) {
case "panup":
//add you code here to check extents
if (mapBounds.top < some_number){
this.map.pan(0, -this.getSlideFactor("h"));
break;
}
switch (this.action) {
case "pandown":
//add you code here to check extents
if (mapBounds.bottom > some_number){
this.map.pan(0, this.getSlideFactor("h"));
break;
}
//leave this as it was, as you don't care about left/right
case "panleft":
this.map.pan(-this.getSlideFactor("w"), 0);
break;
....
等。请注意,您必须填写函数的其余部分,因为它正在覆盖它。您希望确保在加载OpenLayers.js后添加此功能。