我试图限制用户从已定义的边框框中平移地图的能力。
我设置了两个vars" initExtent"和" validExtent" (有效边界框)地图和范围更改我检查当前范围。
但是在更改范围后无限地加载地图:
var initExtent = esri.geometry.Extent({
"xmax": -8550513.84 ,
"xmin": -10751900.25,
"ymax": 7187679.36,
"ymin": 5720088.41,
"spatialReference": {
"wkid": 102100
}
});
var validExtent = esri.geometry.Extent({
"xmax": -8350513.84 ,
"xmin": -10951900.25,
"ymax": 7387679.36,
"ymin": 5520088.41,
"spatialReference": {
"wkid": 102100
}
});
map = new Map( "map" , {
extent: initExtent,
zoom : 6,
logo: false
});
on(map, 'extent-change', function(evt) {
if ( !initExtent.contains(evt.extent) ) {
console.log('Outside bounds!');
} else {
console.log('Updated extent');
validExtent = evt.extent;
}
});
on(map, 'pan-end', function(evt) {
if ( !initExtent.contains(evt.extent) ) {
map.setExtent(validExtent);
}
});
如何解决此问题?
答案 0 :(得分:3)
您设置validExtent to的初始值实际上并不有效,因为它不包含在您的initExtent中。我怀疑可能发生的事情是,在将validExtent变量设置为有效之前,on-pan-end正在触发,这导致它无限循环尝试设置无效范围,检测其无效并因此再次设置它,并结束。尝试将validExtent的值设置为包含在initExtent的值中。