This article beschreibt, wie Sie die Gesamtkartengröße in Pixel abhängig vom tatsächlichen Zoomfaktor ermitteln können.MapControl-Kartengröße (Pixel)
Die Formel sollte lauten:
Karte width = Karte height = 256 * 2^Ebene Pixel
Leider ist dieses nicht für die MapControl für universelle Anwendungen zu funktionieren scheint. Das erste ist, dass die ZoomLevel -Eigenschaft vom Typ double not integer ist (wie im Beispiel im Artikel benötigt). Aber auch mit einer ganzen Zahl ZoomLevel von d. H. 4,0 (int -> 4) funktioniert die Formel nicht.
Jetzt habe ich versucht, die Kartengröße in Pixel mit Hilfe der MapControl.GetOffsetFromLocation Methode zu erhalten:
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;
}
Dies funktioniert mit einer Abweichung von einigen Pixeln, aber dieses Problem ist eigentlich nicht wichtig.
ich auf meiner Oberfläche Pro 3 die folgenden Ergebnisse (Zoomstufe ist 4,0):
Oberflächen Bildschirm (Skala 1.5): 3654px
Oberflächen externer Bildschirm (Skala 1.0): 3274px
None von diesen Ergebnissen ist 4096px wie in dem Artikel beschrieben. Die Ergebnisse sind korrekt und ich kann damit arbeiten. Aber für mich ist es nur ein Workaround und auch wenn der ZoomLevel höher als ca. 13 ist, gibt die GetOffsetFromLocation-Methode -1 für pE.X und pW.X (für -90 und 90) zurück. Für nähere Längengrade zum eigentlichen Zentrum funktioniert es. Es scheint, dass GetOffsetFromLocation eine maximale Entfernung hat. Daher müsste ich bei einem höheren ZoomLevel nähere Längenwerte verwenden.
Das ist alles nicht wirklich eine klare Lösung. Meine Frage ist also: Gibt es eine Speichermethode, um die genaue Kartengröße für das UWP MapControl in Pixeln zu erhalten?
Vielen Dank!
Maas
Ich werde ein bisschen herum damit spielen. Vielen Dank! Aber nein, mein Bildschirm hat eine Pixeldichte von 91. Von Windows.Graphics.Display.DisplayInformation.GetForCurrentView(): Oberflächenbildschirm -> LogicalDpi: 144 | RawDpi: 216 | Maßstab: 1.5 Externer Bildschirm -> LogicalDpi: 96 | RawDpi: 91 | Maßstab: 1.0 – Maas