1

我试图限制用户将地图平移出定义的边界框的能力。

我为地图设置了两个变量“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);
            }
        });

我该如何解决这个问题?

4

1 回答 1

3

您将 validExtent 设置为的初始值实际上是无效的,因为它不包含在您的 initExtent 中。我怀疑可能发生的情况是泛端在 validExtent 变量设置为有效值之前触发,这导致它无限循环尝试设置无效范围,检测其无效并再次设置它,结束和结束。尝试将 validExtent 的值设置为包含在 initExtent 的值中。

于 2014-03-20T21:54:17.983 回答