以度为单位获取MapControl边界的距离

时间:2016-01-09 00:53:30

标签: c# uwp windows-10-universal bing-maps uwp-maps

我有一个MapControl,想知道当前在x和y轴上显示了多少度。

第一个例子: map landscape

x轴(经度)上显示360度

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

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

第二个例子: map portrait

x轴上的~220度(经度)

y轴(纬度)上180度

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

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

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

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

2 个答案:

答案 0 :(得分:3)

您应该使用MapControl的GetLocationFromOffset方法计算当前地图视口的东南角和西北角点的地理坐标。视口的宽度和高度将是这些点的纬度和经度差异。

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;

答案 1 :(得分:-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;