arcgis js 实现卷帘功能
2016-01-15 21:17
821 查看
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
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
相关文章推荐
- js数组的sort排序详解
- HTML—JavaScript基础(三)
- 2016.1.15 百度API和JSON的解析,还有总经理话的体会
- js 程序执行与顺序实现详解
- JS this指向
- Javascript 严格模式详解
- 排序—交换排序(js实现)
- javascript——四种函数调用形式
- 最简单的二维数组的筛选问题
- 判断JSON是否包含字段
- javascript+div弹出框(拼接页面)
- 【翻译】在Ext JS和Sencha Touch中创建自己定义布局
- jstree使用示例
- javascript同步异步
- bzoj 1013 [JSOI2008]球形空间产生器sphere(高斯消元)
- nw.js FrameLess Window下的窗口拖拽与窗口大小控制
- JSQMessagesViewController (一)
- JavaScript 学习摘要
- JavaScript 代码调试工具js代码调试 在火狐浏览器中调试js代码
- ExtJs布局详解