小册子像素大小取决于缩放级别

时间:2014-03-16 21:35:35

标签: leaflet

我必须在传单地图上显示5x5度饼图。我可以使用伟大的leaflet-dvf库显示饼图,但我必须以像素为单位提供半径,到目前为止它是静态的。

我想让它动态化,以便在任何缩放级别,饼图填充5x5平方(也称半径= 5x5度)。

我如何知道5x5度方的像素长度,具体取决于缩放级别?

由于

2 个答案:

答案 0 :(得分:1)

我使用以下页面,根据缩放级别提供传单地图上每米的像素数:

http://wiki.openstreetmap.org/wiki/Zoom_levels

然后我计算了赤道上5x5平方的长度:556000米。 然后我存储缩放级别= 0的长度比: $ scope.lengthRatio = 556000/156412 //以米/像素为单位

最后,我根据缩放级别得到饼图的半径($ scope.mapZoom):

var radius = $ scope.lengthRatio * Math.pow(2,$ scope.mapZoom))/ 2

/ 2是因为我想要半径而不是直径

简单!

答案 1 :(得分:1)

这将计算每像素米数

metresPerPixel = 40075016.686 * Math.abs(Math.cos(map.getCenter().lat / 180 * Math.PI)) / Math.pow(2, map.getZoom()+8);