2

我正在使用leafletgMapCatcher 生成的图块。那里的文件名完全不同。例如 - 传单中的缩放级别 17 在 gMapCatcher 中是级别 0。

我需要更改 url 模板

'http://{s}.somedomain.com/blabla/{z}/{x}/{y}.png'

所以我可以插入正确目录的计算

我尝试了在模板中编写计算的简单方法,但它不起作用。

4

3 回答 3

4

我找到了答案:

我下载了 leaflet.js(通过http://jsbeautifier.org/传递)并更改了 getTileUrl 的代码并添加了我的自定义变量:

getTileUrl: function (t) {
            return o.Util.template(this._url, o.extend({
                s: this._getSubdomain(t),
                z: t.z,
                x: t.x,
                y: t.y,
                z0: 17-t.z,
                x0: Math.floor(t.x/1024),
                x1: Math.floor(t.x%1024),
                y0: Math.floor(t.y/1024),
                y1: Math.floor(t.y%1024)
            }, this.options))
        },

在我的脚本中

  L.tileLayer('img/tiles/gMapCatcher/{z0}/{x0}/{x1}/{y0}/{y1}.png').addTo(map); //gMapCatcher

    L.tileLayer('img/tiles/{z}/{x}/{y}.png').addTo(map);
 //other tiles
于 2013-09-10T08:14:48.053 回答
2

在传单 0.7 中将代码更改为

getTileUrl: function (t) {
        return L.Util.template(this._url, L.extend({
            s: this._getSubdomain(t),
            z: t.z,
            x: t.x,
            y: t.y,
            z0: 17-t.z,
            x0: Math.floor(t.x/1024),
            x1: Math.floor(t.x%1024),
            y0: Math.floor(t.y/1024),
            y1: Math.floor(t.y%1024)
        }, this.options))
    },

否则它会给出一个参考错误并找到gmapcatcher文件的位置只需进入设置并找到位置

于 2013-11-29T04:43:35.430 回答
2

让 shai givati 的回答更进一步,如果您不想编辑源代码,这似乎可行(尽管据我所知没有记录):

var map = L.map('map');

var layer = L.tileLayer().addTo(map);

layer.getTileUrl = function(coords)
{
    var url = /* whatever logic you'd like to use to come up with a url */;
    return url;
};

这样做的好处是在 tileLayer 的单个实例上工作,而不是在每个图层上全局工作。此外,它更符合其他 javascript 映射框架的行为方式,例如谷歌地图。

于 2014-09-29T17:56:38.317 回答