【问题标题】:MapControl map size (pixels)MapControl 地图大小(像素)
【发布时间】:2016-07-25 16:06:11
【问题描述】:

This article 描述了如何根据实际缩放级别获取地图总大小(以像素为单位)。

公式应该是:

地图宽度 = 地图高度 = 256 * 2^level 像素

不幸的是,这似乎不适用于通用应用程序的MapControl。首先,ZoomLevel 属性的类型是双精度而非整数(如本文示例中所需要的那样)。但是对于整数 ZoomLevel 即 4.0 (int --> 4),该公式也不起作用。

现在,我尝试借助 MapControl.GetOffsetFromLocation 方法获取以像素为单位的地图大小:

    private double GetMapSize()
    {
        Point pW, pE;

        myMap.GetOffsetFromLocation(new Geopoint(new BasicGeoposition()
            { Longitude = -90, Latitude = 0 }), out pW);
        myMap.GetOffsetFromLocation(new Geopoint(new BasicGeoposition()
            { Longitude = 90, Latitude = 0 }), out pE);

        return (pE.X - pW.X) * 2;
    }

这适用于某些像素的差异,但这个问题实际上并不重要。

我在 Surface Pro 3 上得到以下结果(ZoomLevel 为 4.0):

曲面屏幕(比例 1.5):3654px

表面外屏(比例1.0):3274px

这些结果都不是文章中描述的 4096 像素。结果是正确的,我可以使用它。但对我来说,这只是一种解决方法,而且如果 ZoomLevel 高于大约 13,GetOffsetFromLocation 方法会为 pE.X 和 pW.X 返回 -1(对于 -90 和 90)。对于更接近实际中心的经度,它可以工作。似乎 GetOffsetFromLocation 的距离最大。因此,当具有更高的 ZoomLevel 时,我需要使用更接近的经度值。

这一切都不是一个明确的解决方案。所以我的问题是:是否有保存方法来获取 UWP MapControl 的精确地图大小(以像素为单位)?

谢谢!

马斯

【问题讨论】:

    标签: c# win-universal-app uwp bing-maps uwp-maps


    【解决方案1】:

    您引用的文章是多年前写的,是所有 Bing 地图控件中地图平铺系统的基础。但是,这适用于平铺系统,不一定适用于显示的地图。 UWP 控件会修改其呈现方式以与屏幕的像素密度保持一致,从而使其美观清晰。这就是您在使用 GetOffsetFromLocation 时看到预期地图像素大小之间存在差异的原因。我相信 UWP 控制用于计算的基本像素密度为 128。Surface Pro 3 的像素密度为 216.33。因此,通过一些数学计算并考虑到 1.5 缩放,我们看到 (128*1.5)/216.33*4096 = 3635 这与您使用您的方法计算的值更接近。考虑到这一点,我估计你外屏的像素密度是 4096/3274*128 = 160。

    至于:

    map width = map height = 256 * 2^zoom;
    

    这也适用于双打。旧的 Bing Maps Silverlight 控件也允许双倍缩放级别,并且在进行像素计算时效果很好。

    【讨论】:

    • 我会玩一点。谢谢!但是不,我的屏幕的像素密度为 91。来自 Windows.Graphics.Display.DisplayInformation.GetForCurrentView(): Surface screen --> LogicalDpi: 144 |原始分辨率:216 | Scale: 1.5 External screen --> LogicalDpi: 96 |原始Dpi:91 |规模:1.0
    猜你喜欢
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2018-06-04
    • 2014-06-02
    相关资源
    最近更新 更多