mirror of
				https://github.com/jiawanlong/Cesium-Examples.git
				synced 2025-11-04 09:14:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
 | 
						||
//判定一下是否存在了SuperMap.Web,如果没有则初始化一个
 | 
						||
if(SuperMap.Web == undefined )
 | 
						||
{
 | 
						||
    SuperMap.Web = new Object();
 | 
						||
}
 | 
						||
//判定一下是否存在了SuperMap.Web.iConnector,如果没有则初始化一个
 | 
						||
if(SuperMap.Web.iConnector == undefined )
 | 
						||
{
 | 
						||
    SuperMap.Web.iConnector = new Object();
 | 
						||
}
 | 
						||
/**
 | 
						||
 * Class:
 | 
						||
 * Bing地图适配器类
 | 
						||
 * @constructor
 | 
						||
 */
 | 
						||
SuperMap.Web.iConnector.Bing = function(){
 | 
						||
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
SuperMap.Web.iConnector.Bing.getTileLayer = function(url,options){
 | 
						||
    if(url == undefined)
 | 
						||
    {
 | 
						||
        return;
 | 
						||
    }
 | 
						||
    var layerUrl = url + "/image.png?redirect=false&width=256&height=256";
 | 
						||
 | 
						||
    //分辨率
 | 
						||
    var resAry= [];
 | 
						||
    resAry[0] = 78271.5170;
 | 
						||
    resAry[1] = 39135.7585;
 | 
						||
    resAry[2] = 19567.8792;
 | 
						||
    resAry[3] = 9783.9396;
 | 
						||
    resAry[4] = 4891.9698;
 | 
						||
    resAry[5] = 2445.9849;
 | 
						||
    resAry[6] = 1222.9925;
 | 
						||
    resAry[7] = 611.4962;
 | 
						||
    resAry[8] = 305.7481;
 | 
						||
    resAry[9] = 152.8741;
 | 
						||
    resAry[10] = 76.4370;
 | 
						||
    resAry[11] = 38.2185;
 | 
						||
    resAry[12] = 19.1093;
 | 
						||
    resAry[13] = 9.5546;
 | 
						||
    resAry[14] = 4.7773;
 | 
						||
    resAry[15] = 2.3887;
 | 
						||
    resAry[16] = 1.1943;
 | 
						||
    resAry[17] = 0.5972;
 | 
						||
    resAry[18] = 0.2986;
 | 
						||
    resAry[19] = 0.1493;
 | 
						||
    resAry[20] = 0.0746;
 | 
						||
    resAry[21] = 0.0373;
 | 
						||
    resAry[22] = 0.0187;
 | 
						||
 | 
						||
 | 
						||
    //计算比例尺数组
 | 
						||
    var scaAry = [];
 | 
						||
    for(var i = 0;i<17;i++)
 | 
						||
    {
 | 
						||
        scaAry[i] = 0.0254/(96*resAry[i]);    //0.0254是meters和pixel的转换
 | 
						||
    }
 | 
						||
 | 
						||
    var tileSource = new Microsoft.Maps.TileSource({uriConstructor: getTilePath});
 | 
						||
 | 
						||
    var tilelayer= new Microsoft.Maps.TileLayer({ mercator: tileSource, opacity: 1 });
 | 
						||
 | 
						||
 | 
						||
    //切片是否透明
 | 
						||
    var transparent = true;
 | 
						||
    if(options && options.transparent !=undefined)
 | 
						||
    {
 | 
						||
        transparent = options.transparent;
 | 
						||
    }
 | 
						||
    layerUrl += "&transparent=" + transparent;
 | 
						||
 | 
						||
    //是否是否使用缓存
 | 
						||
    var cacheEnabled = false;
 | 
						||
    if(options && options.cacheEnabled !=undefined)
 | 
						||
    {
 | 
						||
        cacheEnabled = options.cacheEnabled;
 | 
						||
    }
 | 
						||
    layerUrl += "&cacheEnabled=" + cacheEnabled;
 | 
						||
    if(options && options.layersID !=undefined)
 | 
						||
    {
 | 
						||
        layerUrl += "&layersID=" +options.layersID;
 | 
						||
    }
 | 
						||
 | 
						||
    //改写bing地图的gettilesource方法
 | 
						||
    function getTilePath(tile){
 | 
						||
        var x = tile.x;
 | 
						||
        var y = tile.y;
 | 
						||
        var z = tile.levelOfDetail;
 | 
						||
 | 
						||
        var po = Math.pow(2,z);
 | 
						||
        x-=po/2;
 | 
						||
        y=po/2-y-1;
 | 
						||
        //使用bounds出图(也可以使用center)
 | 
						||
        var left = x*256*resAry[z-1];
 | 
						||
        var bottom = y*256*resAry[z-1];
 | 
						||
        var right = (x + 1)*256*resAry[z-1];
 | 
						||
        var top = (y + 1)*256*resAry[z-1];
 | 
						||
        //将bounds组合到url里面
 | 
						||
        var  tileUrl = layerUrl+"&viewBounds=" +"{\"leftBottom\" : {\"x\":" + left +",\"y\":" + bottom +"},\"rightTop\" : {\"x\":" + right +",\"y\":" +top + "}}";
 | 
						||
        tileUrl +="&scale=" +scaAry[z];
 | 
						||
        //var epsg=projection==="3857"?3857:4326;
 | 
						||
        tileUrl += "&prjCoordSys={\"epsgCode\":"+3857+"}";
 | 
						||
        return tileUrl;
 | 
						||
    }
 | 
						||
 | 
						||
    return tilelayer;
 | 
						||
};
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 |