mirror of
https://github.com/jiawanlong/Cesium-Examples.git
synced 2025-07-07 08:47:29 +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;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|