⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.js

📁 一些Acjax的控件简单应用学习实例
💻 JS
📖 第 1 页 / 共 3 页
字号:
Util = new Object();
//yttyy
//dfsd
//create the only id
Util.createUniqueID = function(prefix) {
    if (prefix == null) {
        prefix = "id_";
    }
    return prefix + Math.round(Math.random() * 10000000);        
}

Util.getValueOfNoPX = function(valueString){
	if(!valueString)
	    return ;
	if (valueString.indexOf("px")) {
		var i = valueString.indexOf("px");
		return Number(valueString.substring(0, i));
	}
	return Number(valueString);
};

//控制右键菜单的显示
Util.RightMenu = null;
Util.SubElemtRightMenu = false;

Util.CloseRightMenu = function()
{
      if( Util.RightMenu !=null )
      {
          if( Util.RightMenu.hidden )
          {
              Util.RightMenu.hidden();
          }
          
          if( Util.RightMenu.hide )
          {
              Util.RightMenu.hide();
          }
          
      }
      Util.RightMenu = null;
      return;
}

//用户点击地图  [主要解决用户已进入拖动功能,但这时他又不想拖动了,
//点击门牌/楼宇以外的位置即可解决拖动功能]
CurDragItem = null;
Util.DragItemReset = function ()
{
    //如果已进行拖动操作,则取消拖动操作
    Drag.CancelEvent();
    if( CurDragItem!=null )
    {
        if( CurDragItem.ResetStatus )
        {
            CurDragItem.ResetStatus();
        }
        CurDragItem = null;
    }
};

Util.getRealMapWidth = function(fullExtent){
//    return Util.distanceByLnglat(fullExtent.getMinX()/1e16,fullExtent.getMaxY()/1e16,fullExtent.getMaxX()/1e16,fullExtent.getMaxY()/1e16);
    return dblFullImagWidth;
}

Util.getRealMapHeight = function(fullExtent){
//    return Util.distanceByLnglat(fullExtent.getMinX()/1e16,fullExtent.getMinY()/1e16,fullExtent.getMinX()/1e16,fullExtent.getMaxY()/1e16);
    return dblFullImagHeight;
}

Util.getRealMapBound1 = function(fullExtent, level){
    //获取当前级别地图的比例尺
    var scale  = Util.zoomScale(level);    
		
    var xmin = fullExtent.getMinX()/1e16;
    var xmax = fullExtent.getMaxX()/1e16;
    var ymin = fullExtent.getMinY()/1e16;
    var ymax = fullExtent.getMaxY()/1e16;
    
    //瓦片的长度
    
    //Changed By Deng Guoqi 2008-06-24
    var tileWidth = TileSize/96*2.54*scale/100;  //  原计算方法逻辑上正确,但与ArcMap中的计算偏差较大,为保持一致,采用固定行列数来进行计算
    var cols = Util.getRealMapWidth(fullExtent)/tileWidth; // double
    var rows = (ymax - ymin)/((xmax - xmin)/cols);
    xmax = (xmax-xmin)/cols*Math.ceil(cols)+xmin;
    ymin = ymax -(ymax-ymin)/rows*Math.ceil(rows);
    return new Bound(xmin*1e16, xmax*1e16, ymin*1e16, ymax*1e16);  
};

//ArcMap出图参数
//全范围宽度(以米为单位)
var dblFullImagWidth = 75979.1643319367;
var dblFullImagHeight = 88513.2661164073;
//1:3000时单张图片宽度(以米为单位)
var dblImgWidth = 173.251652173423;
//1:3000时单张图片宽度(以弧度为单位)
var dblImgE = 0.0018131492526265447 ;
Util.getRealMapBound = function(fullExtent, level){
    //获取当前级别地图的比例尺
    var scale  = Util.zoomScale(level);    
	var dblImgRW = dblImgE * scale /3000;
		
    var xmin = fullExtent.getMinX()/1e16;
    var xmax = fullExtent.getMaxX()/1e16;
    var ymin = fullExtent.getMinY()/1e16;
    var ymax = fullExtent.getMaxY()/1e16;
    
    //瓦片的长度
    
    //Changed By Deng Guoqi 2008-06-24
    var tileWidth = dblImgWidth*(scale/3000);  

    var cols = Util.GetRealCols(level) + 1; 
    var rows = Util.GetRealRows(level)+1;
    xmax = dblImgRW * cols +xmin;
    ymin = ymax - dblImgRW * rows;
    return new Bound(xmin*1e16, xmax*1e16, ymin*1e16, ymax*1e16);  
};

//原计算方法逻辑上正确,但与ArcMap中的计算偏差较大,为保持一致,采用固定行列数来进行计算
Util.getRealTileSize = function(level){
    var scale  = Util.zoomScale(level);    
    var tileWidth = dblImgWidth*(scale/3000);;
    return tileWidth;        
};

//------------------测试-------------------------------------------------------------
//ArcIMS中距离测量方法
var numDecimals = 5;
function calcDistance(lng1,lat1,lng2,lat2) {
	// Note: decimal are not hard coded to allow use with locales using commas instead of points.
	var MapUnits = "DEGREES";
//	if (clickCount>0) {
		var mUnits = MapUnits;
		var mDistance = 0;
//		var p = clickCount-1;
		var Lon1 = lng1;
		var Lon2 = lng2;
		var Lat1 = lat1;
		var Lat2 = lat2;
		var LonDist = Lon1-Lon2;
		var LatDist = Lat1-Lat2;
		if (MapUnits=="DEGREES") {
			var A = Math.pow(Math.sin(LatDist / 2),2) + Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(LonDist /2),2);
			//var A = Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(LonDist /2),2);
			var C = 2 * Math.asin(Math.min(1, Math.sqrt(A)));
			var D = (3963 - 13 * Math.sin((Lat1 + Lat2) / 2)) * C
			mDistance = D * 5280;
			mUnits = "FEET";
		} else {
			var xD = Math.abs(mX - clickPointX[p]);
			var yD = Math.abs(mY - clickPointY[p]);
			mDistance = Math.sqrt(Math.pow(xD,2) + Math.pow(yD,2));
		}
		
		var theDist = convertUnits(mDistance,mUnits,"METERS");//ScaleBarUnits);
		var u = Math.pow(10,numDecimals);
		currentMeasure = parseInt(theDist*u+(5/10))/u;
		return currentMeasure;
//	}
}

// convert the amounts to new units
function convertUnits(theDist1,mUnits,sUnits) {
	// Note: decimal are not hard coded to allow use with locales using commas instead of points.	
	var theDist = parseFloat(theDist1);
	var mDistance = theDist;
	//alert(theDist);
	if (mUnits == "FEET") {
		if (sUnits=="MILES") {
			mDistance = theDist / 5280;
		} else if (sUnits == "METERS") {
			mDistance = theDist * (3048/10000);
		} else if (sUnits == "KILOMETERS") {
			mDistance = theDist * (3048/10000000);
		}
	} else {
		if (sUnits=="MILES") {
			mDistance = theDist * (6213711922/10000000000000);
		} else if (sUnits == "FEET") {
			mDistance = theDist * (3280839895/1000000000);
		} else if (sUnits == "KILOMETERS") {
			mDistance = theDist / 1000;
		}
	}
	var u = Math.pow(10,numDecimals);
	//alert(u);
//	if (!isNav)
	mDistance = parseInt(mDistance * u + (5/10)) / u;
	//alert(mDistance);
	return mDistance;
}

//Google Eath 中的距离测量方法
Util.distanceByLnglat = function(lng1,lat1,lng2,lat2){
    var radLat1 = Util.Rad(lat1);
    var radLat2 = Util.Rad(lat2);
    
    var a = radLat1 - radLat2;
    var b = Util.Rad(lng1) - Util.Rad(lng2);
    var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
    s = s * 6378137.0;// 取WGS84标准参考椭球中的地球长半径(单位:m)
    s = Math.round(s * 10000) / 10000;
    var s1 = calcDistance(Util.Rad(lng1),radLat1,Util.Rad(lng2),radLat2);
    //由于两种JS测量结果与ArcMap中的测量结果相比较,一个偏大,一个偏小,故这里取平均值,以保持与ArcMap中一致
    //Changed By Deng Guoqi 2008-06-24
    //return s;
    return ((s1+s)/2);
}

//得到弧度
Util.Rad = function(d){
    return d * Math.PI / 180.0;
}
//-------------------------------------------------------------------------------------------

//获得标尺
Util.zoomScale = function(level){
    var scale;
    switch(level)
    {
        case 1:
            scale = '250000';       
            break;
        case 2:
            scale = '150000';       
            break;
        case 3:
            scale = '100000';       
            break;
        case 4:
            scale = '50000';       
            break;
        case 5:
            scale = '25000';       
            break;
        case 6:
            scale = '15000';       
            break;
        case 7:
            scale = '8000';       
            break;
        case 8:
            scale = '6000';       
            break;
        case 9:
            scale = '3000';       
            break;
       	        	        
        default:
            scale = -1;
            break;
    }
    return scale;
}

//--------------------------------------
//具体数值适合于2008-5-20切的铜陵市地图  
//2008-05-21
//Added by Dengguoqi 
//取实际切出的各等级下地图图片的行数

Util.GetRealRows = function(level){
    var tileRows;
        switch(level)
        {
            case 1:
                tileRows = 3;
                break;
            case 2:
                tileRows = 5;
                break;
            case 3:
                tileRows = 7;
                break;
            case 4:
                tileRows = 15;
                break;
            case 5:
                tileRows = 30;
                break;
            case 6:
                tileRows = 50;
                break;
            case 7:
                tileRows = 94;
                break;
            case 8:
                tileRows = 126;
                break;
            case 9:
                tileRows = 252;
                break;
            default:
                tileRows = -1;
                break;
        }
        return tileRows;
}

//取实际切出的各等级下地图图片的列数

Util.GetRealCols = function(level){
    var tileCols;
        switch(level)
        {
            case 1:
                tileCols = 5;
                break;
            case 2:
                tileCols = 8;
                break;
            case 3:
                tileCols = 13;
                break;
            case 4:
                tileCols = 26;
                break;
            case 5:
                tileCols = 52;
                break;
            case 6:
                tileCols = 88;
                break;
            case 7:
                tileCols = 165;
                break;
            case 8:
                tileCols = 220;
                break;
            case 9:
                tileCols = 440;
                break;
            default:
                tileCols = -1;
                break;
        }
        return tileCols;
}
//--------------------------------------440


//创建div层

Util.createDiv = function(id,left,top,width,height,img,position,border,opacity){
    if(document.getElementById(id)){
    	return document.getElementById(id);
    }
    var e = document.createElement('div');
    if(id)
        e.id = id ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -