arcgis切图与tilecache切图的区别及openlayers的代码实现

1.命名方法不同
arcgis的命名为
缩放等级表示:L+两位十六进制
行表示:R+8位十六进制
列表示:C+8位十六进制
如:L02/R00000003/C00000004.png
tilecache的命名为:
它的缩放等级、行号、列号都是十进制数字表示
如:2/3/4.png
2.切图的起始坐标不同
arcgis的起始坐标为左上角的点

tilecache的起始坐标为右上角的点


3.openlayer 调用arcgis的切片的关键代码

var test=new OpenLayers.Layer.TMS(
            "ditu",
          "",
          {
              layerName: 'qgm', type: "png", 'getURL': function (bounds) {

              var res = map.getResolution();
        
               var bbox = this.map.getMaxExtent();
               var size = this.tileSize;

        
               var tileX = Math.round((bounds.left - bbox.left) / (res * size.w));
              var tileY = Math.round((bbox.top-bounds.top) / (res * size.h));
                        
              var tileZ = this.map.zoom;    
        
             if(tileZ == 3 && tileX > (Math.pow(2, tileZ) - 1)){
                   tileX = tileX-Math.pow(2, tileZ);                    
             }
        
        if(tileX < 0){tileX = tileX + Math.round(bbox.getWidth() / bounds.getWidth());}       
        if(tileY < 0){tileY = tileY + Math.round(bbox.getHeight() / bounds.getHeight());}   
              return "Layers/_alllayers/L" + convert16(2,z) + "/R" + convert16(8,y) + "/C" +convert16(8,x) + ".png";
              */
                  return "Layers/_alllayers/L" + convert16(2,tileZ) + "/R" + convert16(8,tileY) + "/C" +convert16(8,tileX) + ".png";
              }
          }
      );


function convert16(length,value){
var v=Math.abs(value);
var s=v.toString(16);
var len=length-s.length;
var tmp="";
for(var i=0;i<len;i++){
tmp+="0";
}
return tmp+s;
}


4.openlayers调用tilecache切片的关键代码

var test=new OpenLayers.Layer.TMS(
            quanguoditu,
          "",
          {
              layerName: 'qgm', type: "png", 'getURL': function (bounds) {

              var res = map.getResolution();
              var x = Math.round((bounds.left - map.maxExtent.left) / (res * 256));
              var y = Math.round((bounds.bottom - map.maxExtent.bottom) / (res * 256)); //从下面往上计算
              var z = this.map.getZoom();
              return CACHETMSURL + z + "/" + x + "/" + y + ".png";
              }
          }
      );

   
在此感谢网友“GIS-xyz”和“赵钊烽”给予的代码支持。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值