Нарисуйте круг на MapControl - PullRequest
       5

Нарисуйте круг на MapControl

0 голосов
/ 15 октября 2018

Я знаком с техникой рисования круга, генерируя точки по базовой математике, а затем использую точки для создания MapPolygon.

Есть ли другой способ?

Например, я вижуесть класс для кругов:

public sealed class Geocircle : IGeocircle, IGeoshape

Но я не знаю, как его использовать, кажется, для него нет MapLayer.

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Geocircle используется для создания объекта географического круга для заданной позиции и радиуса.Он часто используется для создания карты Geofence, но не для отображения цикла на карте.

Существует множество способов нарисовать круг на карте

генерация очков по базовой математике

for (var i = 0; i < 360; i++)
{
//draw a cycle
BasicGeoposition point = new BasicGeoposition() 
{ Latitude = centerLatitude + ri * Math.Cos(3.6 * i * 3.14 / 180), Longitude = centerLongitude + ri * Math.Sin(3.6 * i * 3.14 / 180) };
list.Add(point);
}

Добавление Эллипс к карта

private void MyMap_Loaded(object sender, RoutedEventArgs e)
{
    // Specify a known location.
    BasicGeoposition snPosition = new BasicGeoposition { Latitude = 47.620, Longitude = -122.349 };
    Geopoint snPoint = new Geopoint(snPosition);

    // Create a XAML border.
    var ellipse1 = new Ellipse();
    ellipse1.Fill = new SolidColorBrush(Windows.UI.Colors.Coral);
    ellipse1.Width = 200;
    ellipse1.Height = 200;

    // Center the map over the POI.
    MyMap.Center = snPoint;
    MyMap.ZoomLevel = 14;

    // Add XAML to the map.
    MyMap.Children.Add(ellipse1);
    MapControl.SetLocation(ellipse1, snPoint);
    MapControl.SetNormalizedAnchorPoint(ellipse1, new Point(0.5, 0.5));
}
0 голосов
/ 16 октября 2018

Вы можете создавать формы XAML и добавлять их в качестве дочерних элементов к MapControl.Затем вы устанавливаете их местоположение с помощью SetLocation:

var circle = new Ellipse() { 
   Height = 20, 
   Width = 20, 
   Fill = new SolidColorBrush(Colors.Blue)
};
map.Children.Add(circle);
var location = new Geopoint(new BasicGeoposition()
{
   Latitude = 51.1789,
   Longitude = -1.8261
});
map.SetLocation(circle, location);

Класс Geocircle используется для геозон , поэтому он здесь не применим.

...