【发布时间】:2016-01-20 14:26:05
【问题描述】:
我必须在传单地图上显示 5x5 度饼图。我可以使用出色的 leaflet-dvf 库显示饼图,但我必须提供以像素为单位的半径,并且到目前为止它是静态的。
我希望它是动态的,以便在任何缩放级别,饼图都填充 5x5 正方形(也就是半径 = 5x5 度长度)。
我如何知道 5x5 度正方形的边的像素长度,具体取决于缩放级别?
谢谢
【问题讨论】:
标签: leaflet
我必须在传单地图上显示 5x5 度饼图。我可以使用出色的 leaflet-dvf 库显示饼图,但我必须提供以像素为单位的半径,并且到目前为止它是静态的。
我希望它是动态的,以便在任何缩放级别,饼图都填充 5x5 正方形(也就是半径 = 5x5 度长度)。
我如何知道 5x5 度正方形的边的像素长度,具体取决于缩放级别?
谢谢
【问题讨论】:
标签: leaflet
这将计算出每像素的米数
metresPerPixel = 40075016.686 * Math.abs(Math.cos(map.getCenter().lat / 180 * Math.PI)) / Math.pow(2, map.getZoom()+8);
【讨论】:
我使用以下页面,根据缩放级别在传单地图上提供每米像素:
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 是因为我想要半径而不是直径
简单!
【讨论】: