自定义Leaflet Tile Layer从0.7.7到1.2.0

时间:2017-08-23 21:49:34

标签: javascript leaflet

我正在将一些遗留代码从Leaflet 0.7.7移到Leaflet 1.2.0。有一个自定义的TileLayer可以覆盖getTileUrl()。在1.2.0中,坐标缩放到0.7.7的一半。这对使用该服务查询切片造成了问题。

以下是getTileUrl()的现有实现:

getTileUrl: function (tilePoint) {
    var imgType = "png",
        yHex = tilePoint.y.toString(0x10),
        xHex = tilePoint.x.toString(0x10),
        yPath = 'R' + this.padString(yHex, 8, '0').toUpperCase(),
        xPath = 'C' + this.padString(xHex, 8, '0').toUpperCase() + '.' + imgType,
        z = (tilePoint.z + 1),
        zL = 'L'+ (z<10?'0':'')+ z,
        final_url = this._url +zL+"/"+ yPath + "/" + xPath;

    return final_url;
}

只是将x和y值加倍不起作用。 Leaflet中是否有一些机制可以纠正这种情况,例如内部坐标的乘数?无法找到用于将此类事件从0.7.7移动到1.2.0的良好资源。

以下是一个例子:

在0.7.7中,我使用中心位置[38.854699,-94.797763]

这个tilePoint为{x:7755,y:12540,...}

在1.2.0中具有相同的中心位置时,该点为{x:3877,y:6270,...}

因此它明显减少了0.7.7中使用的旧值。

1 个答案:

答案 0 :(得分:0)

  

这个tilePoint为{x:7755,y:12540,...}

     

在1.2.0中具有相同的中心位置时,该点为{x:3877,y:6270,...}

仔细观察,这些坐标会加倍。这意味着缩放级别存在一个逐个错误(因为xy平铺坐标基本上是每个缩放级别的两倍)。您应该尝试删除z = (tilePoint.z + 1)偏移量,或以其他方式摆弄它以查看拼贴坐标是否卡入到位。