Windows Phone 8 Map:{System.ArgumentException:Value不在预期范围内。}

时间:2014-03-05 12:17:36

标签: c# windows-phone-8 maps

我的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);

编辑:上面的代码是页面上的加载事件。

我得到的是“值不在预期范围内”错误。

有什么想法吗?

2 个答案:

答案 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.Latituteitem.Longitude的价值吗?

如果没有,请调试并跳过每一行以查看错误发生的位置。或者提供listOfItems

实例的一些示例值