2017-08-23 15 views
0

我将一些传统代码从Leaflet 0.7.7移到Leaflet 1.2.0。有一个用于覆盖getTileUrl()的自定义TileLayer。在1.2.0中,坐标缩放到0.7.7的一半。这对使用该服务查询磁贴造成问题。从0.7.7到1.2.0的自定义传单磁贴层

这里是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中使用的旧值的清晰减半。

+0

如果您可以通过给定'tilePoint'输入提供期望的URL,以及什么是“错误”结果,这可能会有所帮助。 – ghybs

+0

无法重现您的问题:http://playground-leaflet.rhcloud.com/seno/1/edit?html,output – ghybs

+0

@ghybs任何想法,为什么它减半我?一些配置?我的主要问题是如何能够/可以在Leaflet中进行调整。 –

回答

0

这具有这样的一个tilepoint为{X:7755,Y:12540,...}

虽然1.2.0具有相同的中心位置的点是{X:3877,Y:6270, ...}

如果仔细观察,那些坐标会加倍。这意味着缩放级别存在逐个错误(因为对于每个缩放级别,xy瓦片坐标基本上都是双倍)。你应该尝试去掉z = (tilePoint.z + 1)偏移量,或者用其他方法来摆弄它,看看瓷砖坐标是否合适。