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