以度数获取 MapControl 边界的距离

Get distance of MapControl border in degrees

我有一个 MapControl,想知道 x 轴和 y 轴上当前显示的度数。

第一个例子:

x 轴(经度)显示 360 度

~90度显示在y轴(纬度)上

(缩放级别为 3.2,最大缩小)

第二个例子:

x轴(经度)~220度

y 轴(纬度)180 度

(缩放级别:1.7;最大缩小)

我尝试使用以下代码计算 x 轴上的当前度数:

double dist = 360 * Math.Pow(0.5, macSurrounding.ZoomLevel - 1);

但它不起作用,因为缩放级别很奇怪...

知道了:

经度:

360 * Math.Pow(0.5, mcMapControl.ZoomLevel - 1) * mcMapControl.ActualWidth / 409.5;

纬度:

180 * Math.Pow(0.5, mcMapControl.ZoomLevel - 1) * mcMapControl.ActualHeight / 409.5;

您应该使用 MapControl 的 GetLocationFromOffset 方法来计算当前地图视口的 south-east 和 north-west 角点的地理坐标。视口的宽度和高度就是这些点的经纬度差。

Geopoint northEast;
Geopoint southWest;

map.GetLocationFromOffset(new Point(map.ActualWidth, 0), out northEast);
map.GetLocationFromOffset(new Point(0, map.ActualHeight), out southWest);

var width = northEast.Position.Longitude - southWest.Position.Longitude;
var height = northEast.Position.Latitude - southWest.Position.Latitude;