Closed a-klimashevsky closed 11 years ago
Так же хотелось бы узнать обработчик перемещения карты или сметы зума
Для преобразования ViewPort в координаты следует воспользоваться методом ViewportPointToCoordinates Например для получения координат верхнего левого угла карты: map.ViewportPointToCoordinates(new Media.Point(map.PlainViewPort.Top, map.PlainViewPort.Left)
Если вам необходимо следить за обновлением ViewPort то в таком случае следует использовать событие OperationStatusChanged, с проверкой OperationStatus.Idle Например вот так:
private void MapOperationStatusChanged(object sender, OperationStatusChangedEventArgs e)
{
if (e.OperationStatus == OperationStatus.Idle)
{
Debug.WriteLine(map.ViewportPointToCoordinates(new Media.Point(map.PlainViewPort.Top, map.PlainViewPort.Left)));
}
}
Я использую следующий код: p1 и p2 имеют различные координаты. а вот topRight и bottomLeft - одинаковые. Тестировал на эмуляторе 8.0
private void map_OperationStatusChanged(object sender, OperationStatusChangedEventArgs e)
{
if (e.OperationStatus == OperationStatus.Idle)
{
var viewPort = map.PlainViewPort;
var p1 = new Point(viewPort.Top, viewPort.Right);
var p2 = new Point(viewPort.Bottom, viewPort.Left);
var topRight = map.ViewportPointToCoordinates(p1);
var bottomLeft = map.ViewportPointToCoordinates(p2);
}
}
Не правильно вам написал. ViewportPointToCoordinates переводит экранные точки в координаты. Отсчёт экранных точек происходит от верхнего левого угла видимой области карты. Для получения координат topLeft нужно передать в качестве аргумента точку (0,0) Для получения координат BottomRight нужно передать в качестве аргумента точку (map.Viewport.Width, map.Viewport.Height). Свойство PlainViewPort в этой ситуации не нужно.
у карты есть свойство PlainViewPort, но как его координаты преобразовать в геокоординаты?