zoukankan      html  css  js  c++  java
  • 应用ArcGIS Server JavaScript API实现地图卷帘效果实现

    var maskDynamicMapServiceLayer = null;
    var maskDynamicMapServiceLayerDiv = null;
    var pointNumb = 0;
    var alignType = "";
    var mapMouseDownEvent= null;
    var mapMouseMoveEvent = null;
    var mapMouseUpEvent = null;
    var mapDiv = null;
    function initOverlayerContrast(layer)
    {
        maskDynamicMapServiceLayer = layer;
        maskDynamicMapServiceLayerDiv = document.getElementById("map_" + maskDynamicMapServiceLayer.id);
        mapDiv = document.getElementById("map");
        mapDiv.onmousedown = startDragSwipe;    
        map.disablePan();
    }
    
    function destroyOverlayerContrast()
    {
        mapDiv.onmousedown = null;
        mapDiv = null;
        maskDynamicMapServiceLayer = null;
        maskDynamicMapServiceLayerDiv = null;
        map.enablePan();
    }
    
    function startDragSwipe(e) {
        pointNumb = 1;
        var eventObj = window.event || e;
        var x = eventObj.clientX;
        var y = eventObj.clientY;
        maskDynamicMapServiceLayerDiv = document.getElementById("map_" + maskDynamicMapServiceLayer.id);
        mapDiv.onmousemove = moveDragSwipe;
        mapDiv.onmouseup = stopDragSwipe;
        //
        var leftOffset = x;
        var topOffset = y;
        var rightOffset = document.body.clientWidth - x;
        var bottomOffset = document.body.clientHeight - y;
        var minOffset = 0;
        if (leftOffset < rightOffset) {
            minOffset = leftOffset;
            alignType = "left";
        } else {
            minOffset = rightOffset;
            alignType = "right";
        }
        if (topOffset < minOffset) {
            minOffset = topOffset;
            alignType = "top";
        }
        if (bottomOffset < minOffset) {
            minOffset = bottomOffset;
            alignType = "bottom";
        }
        //
        var clip = "rect(auto, auto, auto," + x + "px)";
        if (alignType == "right") {
            clip = "rect(auto, " + x + "px, auto, auto)";
        } else if (alignType == "top") {
            clip = "rect(" + y + "px, auto, auto, auto)";
        } else if (alignType == "bottom") {
            clip = "rect(auto, auto, " + y + "px, auto)";
        }
        maskDynamicMapServiceLayerDiv.style.clip = clip;
    }
    
    function moveDragSwipe(e) {
        var eventObj = window.event || e;
        var x = eventObj.clientX;
        var y = eventObj.clientY;
        //
        if (maskDynamicMapServiceLayerDiv && pointNumb == 1) {        
            var clip = "rect(auto, auto, auto," + x + "px)";
            if (alignType == "right") {
                clip = "rect(auto, " + x + "px, auto, auto)";
            } else if (alignType == "top") {
                clip = "rect(" + y + "px, auto, auto, auto)";
            } else if (alignType == "bottom") {
                clip = "rect(auto, auto, " + y + "px, auto)";
            }
            maskDynamicMapServiceLayerDiv.style.clip = clip;
        }
    }
    
    //
    function stopDragSwipe(evt) {
        if (maskDynamicMapServiceLayerDiv)
        {
            maskDynamicMapServiceLayerDiv.style.clip = "rect(auto, auto, auto, auto)";
        }
        pointNumb = 0;
        mapDiv.onmousemove = null;
        mapDiv.onmouseup = null;
    }
  • 相关阅读:
    CF 936C Lock Puzzle——构造
    LOJ 2980 「THUSCH 2017」大魔法师——线段树
    LOJ 2979 「THUSCH 2017」换桌——多路增广费用流
    LOJ 2978 「THUSCH 2017」杜老师——bitset+线性基+结论
    LOJ 2997 「THUSCH 2017」巧克力——思路+随机化+斯坦纳树
    LOJ 2557 「CTSC2018」组合数问题 (46分)
    bzoj 3158 千钧一发 —— 最小割
    CF1092 D & E —— 思路+单调栈,树的直径
    bzoj 5120 无限之环 & 洛谷 P4003 —— 费用流(多路增广SPFA)
    bzoj 1070 修车 —— 费用流
  • 原文地址:https://www.cnblogs.com/gispathfinder/p/5779438.html
Copyright © 2011-2022 走看看