以度数获取 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;
我有一个 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;