我知道通过基本数学生成点,然后使用这些点创建MapPolygon来画圆的技术。
还有其他方法吗?
例如,我看到有一个关于圈子的课程:
public sealed class Geocircle : IGeocircle, IGeoshape
但是我不知道如何使用它,似乎没有MapLayer
。
答案 0 :(得分:0)
您可以创建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
类用于geofencing,因此在这里不适用。
答案 1 :(得分:0)
Geocircle
用于为给定的位置和半径创建地理圆对象。它通常用于制作地图Geofence
,但不用于在地图上显示周期。
有很多方法可以在地图上绘制圆圈
generating points通过基本数学
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));
}