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;
    }
  • 相关阅读:
    PYthon继承链(egg)的思考和实战
    C++不同类型变量参与运算时的规则
    qt通过QFileDialog获取文件路径&保存文件&选择文件夹
    visual studio 2015调试程序
    C++Primer第五版——书店程序实现
    git rm命令 & git reset和checkout区别
    git diff命令输出解释 & git checkout还原文件到特定版本
    Qt使用connect传参数的两种方式
    QFrame的setFrameStyle函数 && QPalette设置背景
    tr函数作用
  • 原文地址:https://www.cnblogs.com/gispathfinder/p/5779438.html
Copyright © 2011-2022 走看看