zoukankan      html  css  js  c++  java
  • leaflet本地加载arcgis切片

    var origin = [-20037700, 33711400];//图层起点坐标  
    var resolutions = [  
        8466.6836000338681, // Level 0  
        4233.341800016934, // Level 1  
        2116.670900008467, // Level 2  
        1058.3354500042335, // Level 3  
        529.16772500211675 // Level 4  
    ];  
    var crs = new L.Proj.CRS(  
        '',   
        '+proj=cea +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs' , {  
            origin:  origin,  
            resolutions: resolutions  
        }  
    );  
            var map = L.map('map',{  
        crs: crs,  
        continuousWorld: true,  
        worldCopyJump: false  
    }).setView([23.39552, 113.308189], 0);  
    var tileLayer = new L.TileLayer.TileLoad('http://localhost:8080/resources/china', {  
                  maxZoom: resolutions.length - 1,  
                  minZoom: 0,  
                  continuousWorld: true  
              });  
    tileLayer.addTo(map);  
    /** 
     * 加载本地arcgis切片类 
     *  
     * @author ful 
     * @date 2014-09-03 
     * @copyright (c)  
     */  
      
    /** 
     * 继承自TileLayer 
     * @param {Object} tomcat中映射该切片目录url 
     * @param {Object} options 
     */  
    L.TileLayer.TileLoad = L.TileLayer.extend({  
        initialize: function (url, options) {  
            options = L.setOptions(this, options);  
            this.url = url + "/Layers/_alllayers/{z}/{x}/{y}.png";  
            L.TileLayer.prototype.initialize.call(this, this.url, options);  
        }  
    });  
      
    /** 
     * 重写TileLayer中获取切片url方法 
     * @param {Object} tilePoint 
     */  
    L.TileLayer.prototype.getTileUrl = function(tilePoint) {  
        return L.Util.template(this._url, L.extend({  
            s: this._getSubdomain(tilePoint),  
            z: function() {  
                var value = tilePoint.z.toString(16);  
                return "L" + pad(value, 2);  
            },  
            x: function() {  
                var value = tilePoint.y.toString(16);  
                return "R" + pad(value, 8);  
            },  
            y: function() {  
                var value = tilePoint.x.toString(16);  
                return "C" + pad(value, 8);  
            }  
        }));  
    };  
      
    L.tileLayer.tileLoad = function(url, options){  
      return new L.TileLayer.TileLoad(url, options);  
    };  
      
    /** 
     * 高位补全方法 
     * @param {Object} 数字类型字符串 
     * @param {Object} 总位数,不足则高位补0 
     */  
    var pad = function(numStr, n) {  
        var len = numStr.length;  
        while(len < n) {  
            numStr = "0" + numStr;  
            len++;    
        }  
        return numStr;  
    };  

     最后赋一段extend代码

           // 扩展加载ArcServer本地缓存的服务
            L.TileLayer.ArcServerTileLoad = L.TileLayer.extend({
                getTileUrl: function(tilePoint) {
                    var oo = "00000000";
                    var xx = tilePoint.x.toString(16);
                    xx = "C" + oo.substring(0, 8 - xx.length) + xx;
                    //var yy = (tilePoint.y - Math.pow(2, tilePoint.z - 2)).toString(16); //这里减去偏移值
                    var yy = tilePoint.y.toString(16);
                    yy = "R" + oo.substring(0, 8 - yy.length) + yy;
    
                    //z如果小于10的时候处理下
                    if(tilePoint.z.toString().length == 1) {
                        tilePoint.z = '0' + tilePoint.z.toString();
                    }
                    return L.Util.template(this._url, L.extend({
                        s: this._getSubdomain(tilePoint),
                        z: "L" + tilePoint.z,
                        x: xx,
                        y: yy
                    }, this.options));
                }
            });
    
    
            L.tileLayer.arcServerTileLoad = function(url, options){
                return new L.TileLayer.ArcServerTileLoad(url, options);
            };
            //return this.baseLayer = L.tileLayer.arcServerTileLoad(url);
  • 相关阅读:
    微软职位内部推荐-Senior SDE
    在使用Fake framework的时候,为什么有一些函数没有生产mock呢?
    Call Azure Queue get "The remote server returned an error: (400) Bad Request."
    技术分享
    IT牛人博客
    Spring-data-redis操作redis cluster
    Spring对Hibernate事务管理【转】
    Hibernate事务管理
    Redis与Memcached对比
    LockSupport的park和unpark
  • 原文地址:https://www.cnblogs.com/lishanyang/p/9170352.html
Copyright © 2011-2022 走看看