Hạn chế bản đồ cơ sở ở mức độ cụ thể trong ArcGIS API cho JavaScript 3?


8

Hiện tại tôi đang sử dụng ArcGIS JS API ver 3.3 / 3.5 trong ứng dụng của mình.

Tôi muốn hạn chế sơ đồ cơ sở chỉ cho Hoa Kỳ. Ví dụ người ta có thể sử dụng các tính năng điều hướng mặc định như phóng to, thu nhỏ chỉ cho Quốc gia Hoa Kỳ.

Cố gắng làm những điều sau đây:

  1. Tôi đã đặt mã phạm vi Hoa Kỳ trong ứng dụng của mình nhưng khi tôi thu nhỏ thì tôi có thể thấy toàn bộ bản đồ thế giới, tôi chỉ muốn giới hạn nó ở một mức độ nhất định

  2. Vượt qua câu hỏi này: Hạn chế pan và phóng to API Javascript ArcGIS?

  3. Hạn chế sơ đồ cơ sở đường phố bằng câu hỏi này, nhưng không thể hạn chế bản đồ: Sử dụng sơ đồ cơ sở riêng với API ArcGIS cho Javascript?

  4. Tôi đang sử dụng bản đồ mẫu này trong ứng dụng của tôi.

Câu trả lời:


4

Dưới đây là một ví dụ về một cách để làm điều này: http://jsfiddle.net/gh/gist/l Library / pure / 6050806 /


4

Dưới đây là một ví dụ về mã tôi đã sử dụng để làm điều này. Điều này sẽ hoạt động cho trường hợp của bạn nếu bạn đặt phạm vi ban đầu của bản đồ để hiển thị ở Hoa Kỳ:

//This function limits the extent of the map to prevent users from scrolling 
//far away from the initial extent.
function limitMapExtent(map) {
    var initialExtent = map.extent;
    map.on('extent-change', function(event) {
        //If the map has moved to the point where it's center is 
        //outside the initial boundaries, then move it back to the 
        //edge where it moved out
        var currentCenter = map.extent.getCenter();
        if (!initialExtent.contains(currentCenter) && 
            event.delta.x !== 0 && event.delta.y !== 0) {

            var newCenter = map.extent.getCenter();

            //check each side of the initial extent and if the 
            //current center is outside that extent, 
            //set the new center to be on the edge that it went out on
            if (currentCenter.x < initialExtent.xmin) {
                newCenter.x = initialExtent.xmin;
            }
            if (currentCenter.x > initialExtent.xmax) {
                newCenter.x = initialExtent.xmax;
            }
            if (currentCenter.y < initialExtent.ymin) {
                newCenter.y = initialExtent.ymin;
            }
            if (currentCenter.y > initialExtent.ymax) {
                newCenter.y = initialExtent.ymax;
            }
            map.centerAt(newCenter);
        }
    });
}

Đây là một ví dụ jsFiddle hoạt động: http://jsfiddle.net/sirhcybe/aL1p24xy/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.