2015-12-01 9 views
1

У меня вопрос о новом управлении картой в Windows 10 UWP. Мне нужно добавить слой карты, который будет содержать множество полигонов, каждый многоугольник должен содержать некоторые данные, привязанные к нему, и я хочу знать, как обрабатывать событие перехода на полигоне, чтобы отображать связанные с ним детали. Но нет свойства DataContext, и никакое событие не используется в классе MapPolygon. как мы можем достичь этого?Нет свойства DataContext и Tapped в New Map Control - Windows 10

+0

Вы уже пытались последовать этому примеру ? http://dotnetbyexample.blogspot.be/2015/08/windows-10-maps-part-3-querying-map.html – Depechie

ответ

1

Вы можете определить Polygon в шаблоне данных, и вы можете связать Pathgog с полигоном в списке BasicGeoposition. Для задействованного события вы можете получить геолокацию из события mapElementClick, когда пользователь нажимает на Polygon.

Я попытался следующий код, чтобы получить событие водопроводную от полигона и, кажется, работает

1) Создание полигона

var polygon = new MapPolygon(); 
polygon.FillColor = Color.FromArgb(80, 255, 0, 0); 
polygon.StrokeColor = Colors.Red;  
polygon.StrokeThickness = 15; 

2) Установка пути для полигона

List<BasicGeoposition> positions = new List<BasicGeoposition>(); 
     positions.Add(new BasicGeoposition { Latitude = 25.251231, Longitude = 55.305957 }); 

     positions.Add(new BasicGeoposition { Latitude = 25.251105, Longitude = 55.306445 }); 
     positions.Add(new BasicGeoposition { Latitude = 25.249977, Longitude = 55.306091 }); 
     positions.Add(new BasicGeoposition { Latitude = 25.250392, Longitude = 55.304441 }); 
     positions.Add(new BasicGeoposition { Latitude = 25.250748, Longitude = 55.304661 }); 
     positions.Add(new BasicGeoposition { Latitude = 25.250481, Longitude = 55.305726 }); 
     polygon.Path = new Geopath(positions); 

3) Добавить многоугольник в MapElemetns

myMap.MapElements.Add(polygon);

4) Установите центр карты и уровень масштабирования

myMap.Center = new Geopoint((new BasicGeoposition { Latitude = 
25.251231, Longitude = 55.305957 }));  
myMap.ZoomLevel = 18; 

5) Добавить событие MapElementClick для обработки крана на полигоне

myMap.MapElementClick += MyMap_MapElementClick; 
private void MyMap_MapElementClick(MapControl sender, MapElementClickEventArgs args) 
     { 
      // add your code to position the canvas (pop up) and display it here 
     }