2016-01-09 4 views
1

У меня есть MapControl и хотелось бы узнать, сколько градусов в настоящее время показано на осях x и y.Получите расстояние от границы MapControl в градусах

Первый пример: map landscape

360 градусов показаны на оси х (широта, долгота)

~ 90 градусов, показаны на оси у (широта)

(Уровень масштабирования 3.2 и это максимальный масштаб изображения)

Второй пример: map portrait

~ 220 градусов по оси х (долгота)

180 градусов по оси у (широта)

(увеличение уровня: 1,7; Макс масштаб изображения)

Я попытался расчета текущих градусов по оси х, используя следующий код:

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

но это не работает, потому что уровень масштабирования просто странно ...

ответ

3

Вы должны использовать метод GetLocationFromOffset в MapControl для расчета географических координат на юго-востоке и северо-западе угловых точек текущего просмотра карты. Ширина и высота окна просмотра - это различия в широте и долготе этих точек.

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

Понял:

Долгота:

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

Широта:

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

Этот расчет неверен, поскольку он не учитывает проекцию карты (и, конечно же, использует сомнительное магическое значение '409.5'). См. Мой ответ. – Clemens

+0

Я получил магическое значение, экспериментируя с картой. Если я уменьшаю масштаб изображения на карте размером 1000х1000, я могу видеть 360-градусную долготу и 180-градусную широту с уровнем масштабирования около ~ 2,2 Если я уменьшаю карту на карте размером 409,5x409,5, я также может видеть 360deg и 180deg с уровнем масштабирования 1. Итак, я понял, что зум относится только к центру 409.5x409.5 ^^ –