This articleは実際のズームレベルに応じて合計マップサイズをピクセル単位で取得する方法を説明しています。MapControlマップのサイズ(ピクセル)
式は次のようになります。
マップ幅=マップの高さ= 256 * 2 ^レベル画素
残念ながら、これはユニバーサルアプリのためMapControlのために動作するようには思えません。最初に、ZoomLevelプロパティはdouble型ではありません(記事のサンプルで必要です)。しかし、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;
}
これは、いくつかのピクセルの食い違いで動作しますが、この問題は実際には重要ではありませんが。
は、私は私の表面に乗るプロ3次の結果(ZoomLevelが4.0である):
表面スクリーン(スケール1.5):3654px
表面外部スクリーン(スケール1.0):3274px
なしこれらの結果のうち、記事で説明したように4096ピクセルです。結果は正しいですし、私はそれを使用することができます。しかし、私にとっては単なる回避策であり、ZoomLevelが約13より大きい場合、GetOffsetFromLocationメソッドはpE.XとpW.X(-90と90)に対して-1を返します。実際の中心に近いほど、それは機能します。 GetOffsetFromLocationには最大距離があるようです。だから私は、より高いZoomLevelを持つときに、より近い経度値を使用する必要があります。
これはすべて実際には明らかな解決策ではありません。だから私の質問は:UWP MapControlの正確なマップサイズをピクセル単位で取得する保存方法はありますか?
ありがとうございました!
マース
私はそれを少し周りに演奏します。ありがとう! いいえ、私の画面のピクセル密度は91です。 Windows.Graphics.Display.DisplayInformation.GetForCurrentView()から: サーフェス画面 - > LogicalDpi:144 | RawDpi:216 |スケール:1.5 外部画面 - > LogicalDpi:96 | RawDpi:91 |スケール:1.0 – Maas