This article描述了如何根据实际缩放级别以像素为单位获取总地图大小。MapControl地图大小(像素)
的公式应该是:
地图宽度=地图高度= 256 * 2 ^水平像素
不幸的是这似乎并没有为MapControl普遍应用的工作。首先,ZoomLevel属性的类型是double not integer(根据本文示例中的需要)。但是对于整数数字的缩放级别,即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;
}
这适用于一些像素的差异,但这个问题其实并不重要。
我得到我的面临3个的结果如下(缩放级别为4.0):
面屏(规模1.5):3654px
表面外屏(规模1.0):3274px
无这些结果是4096px像文章中所述。结果是正确的,我可以与此合作。但对我来说,这只是一种解决方法,而且如果ZoomLevel高于大约13,则GetOffsetFromLocation方法为pE.X和pW.X返回-1(对于-90和90)。对于更接近经度的实际中心而言。看来GetOffsetFromLocation具有最大的距离。所以我需要使用更高的ZoomLevel时使用更接近的经度值。
这一切都不是一个明确的解决方案。所以我的问题是:有没有一种保存方法来获取UWP MapControl的精确地图大小(以像素为单位)?
谢谢!
马斯
我会玩一点。谢谢! 但是不,我的屏幕像素密度为91。 从Windows.Graphics.Display.DisplayInformation.GetForCurrentView(): 表面屏幕 - > LogicalDpi:144 | RawDpi:216 |比例:1.5 外部屏幕 - > LogicalDpi:96 | RawDpi:91 |比例:1.0 – Maas