我的XAML中有一个Map控件:
<maps:Map x:Name="MapViewControl" Height="480">
</maps:Map>
我在后面的代码中填充MapLayer:
MapLayer layer = new MapLayer();
MapOverlay overLay;
layer.Clear();
foreach (var item in listOfItems)
{
overLay = new MapOverlay();
overLay.GeoCoordinate = new GeoCoordinate(item.Latitude, item.Longitude);
overLay.Content = redCircle;
overLay.PositionOrigin = new Point(0.5, 0.5);
layer.Add(overLay);
}
MapViewControl.Layers.Add(layer);
编辑:上面的代码是页面上的加载事件。
我得到的是“值不在预期范围内”错误。
有什么想法吗?
答案 0 :(得分:3)
我明白了。问题是redCircle(:))。这是我创建的椭圆形状的参考。不知何故,Mapping框架不喜欢将内容的相同实例引用到所有叠加层。
在:
overLay.Content = redCircle;
之后(即现在):
overLay.Content = CreateShape();
将CreateShape定义为:
private Ellipse CreateShape()
{
Ellipse redCircle = new Ellipse();
redCircle.Width = 10;
redCircle.Height = 10;
redCircle.Fill = new SolidColorBrush(Colors.Red);
return redCircle;
}
因此,它每次都在循环中创建。
答案 1 :(得分:1)
新GeoCoordinate()
的构造函数期望参数的值从-90.0到90.0。如果您不符合此条件,则会抛出ArgumentOutOfRangeException
。
您可以验证item.Latitute
和item.Longitude
的价值吗?
如果没有,请调试并跳过每一行以查看错误发生的位置。或者提供listOfItems