【问题标题】:leaflet pixel size depending on zoom level传单像素大小取决于缩放级别
【发布时间】:2016-01-20 14:26:05
【问题描述】:

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

我希望它是动态的,以便在任何缩放级别,饼图都填充 5x5 正方形(也就是半径 = 5x5 度长度)。

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

谢谢

【问题讨论】:

    标签: leaflet


    【解决方案1】:

    这将计算出每像素的米数

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

    【讨论】:

      【解决方案2】:

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

      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 是因为我想要半径而不是直径

      简单!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-09
        • 2015-02-17
        • 2016-07-06
        • 1970-01-01
        • 1970-01-01
        • 2012-09-26
        • 2019-06-04
        • 2020-07-16
        相关资源
        最近更新 更多