arcgis js 实现卷帘功能

function SwipeMap(){
this.maptoplayer;
this._map_drag;
this.InitSwipe = function(){  
var rt = true;
require(["dojo/on"],function(on){
var divID = getTopLayerDivID();
var div = $("#"+divID);
if(div.length>0){
this.maptoplayer = div[0];
}else{
showError("当前图层不支持卷帘操作",true);
rt = false;
}
if(rt){
map.disablePan();   
this._map_drag = on(map, "mouse-drag",function(e) {  
       e.stopPropagation();
       map.disablePan(); 
var offsetX=e.screenPoint.x;
var offsetY=e.screenPoint.y;
refreshDivSize(offsetX,offsetY,maptoplayer); 
}); 

}); 
return rt;
}  

this.disableSwipe=function (){
clearSwipe();
}

function clearSwipe(){
if(this._map_drag!=undefined){
this._map_drag.remove();
map.enablePan(); 
if(this.maptoplayer!=undefined){
var offsetX=map.width;
var offsetY=map.height;
//refreshDivSize(offsetX,offsetY,this.maptoplayer); 
this.maptoplayer.style.clip="auto";
}
}
}

function getTopLayerDivID(){
var layerlist = map.layerIds;
var len =0;
if(layerlist!=undefined&&layerlist.length>0){
len = layerlist.length;
}else{
return null;

var divID=null;
for(var i=len-1;i>0;i--){
var item = map.getLayer(layerlist[i]);
if(item.visible){
divID = "map_"+item.id;
break;
}
}
return divID;
}

function refreshDivSize(offsetX,offsetY,mapdiv){
var origin=getLayerTransform(mapdiv);
var cliptop=-origin.y+"px"; 
var clipleft=-origin.x+"px";//clip的左上起点
var clipbottom,cliplright;   
clipbottom=(offsetY-origin.y)+'px';
   clipright=(offsetX-origin.x)+"px"; 
   mapdiv.style.clip='rect('+cliptop+','+clipright+','+clipbottom+','+clipleft+')';
}

function getLayerTransform(layer) {
   var xorigin, yorigin, layerstyle = layer.style;
   if (layerstyle['-webkit-transform']) {//chrome
       var s = layerstyle['-webkit-transform'];//格式为"translate(0px, 0px)"
       var xyarray = s.replace(/translate\(|px|\s|\)/, '').split(',');
       xorigin = parseInt(xyarray[0]);
       yorigin = parseInt(xyarray[1]);
   }else if (layerstyle['transform']) {//firefox
    var layertransforstring=layerstyle['transform'];
       var xyz = layertransforstring.replace(/px|\s|translate3d\(|px|\)/g, '').split(',');
       xorigin = parseInt(xyz[0]);
       yorigin = parseInt(xyz[1]);
   }else {//ie 8+
       xorigin = parseInt(layer.style.left.replace('px', ''));
       yorigin = parseInt(layer.style.top.replace('px', ''));
   }
   return {
       x: xorigin,
       y: yorigin
   }
}

}

有问题联系 qq 541247221

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一醉千秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值