5

我刚刚从我的映射程序中清除了图层,当我尝试添加新图层时收到此错误消息。

newSystem.ArgumentException was unhandled by user code
HResult=-2147024809
Message=Value does not fall within the expected range.
Source=System.Windows
InnerException:

如果有人知道为什么会这样,我将非常感谢您的帮助

  private void loadZoomLevel12Pics()
    {
        map1.Layers.Clear();
        MapLayer pinLayer = new MapLayer();
        // Create a new empty Pushpin
        // Beny Sur- Mer War Cemetary 
        MapOverlay pinOverlay = new MapOverlay();
        // Add the location of the Pushpin using latitude and longitude.
        pinOverlay.GeoCoordinate = new GeoCoordinate(49.33783000, -0.45215600);
        //Image pinOverlayImage = new Image();
        pinOverlayImage.Source = new BitmapImage(new Uri("images/Hedgehog.png", UriKind.Relative));
        pinOverlay.Content = pinOverlayImage;
        pinOverlay.PositionOrigin = new Point(0.0, 0.0);
        pinOverlayImage.Opacity = 0.8;
        pinOverlayImage.Height = 8;
        pinOverlayImage.Width = 8;
        pinOverlayImage.Tap += pinOverlayImage_Tap;
        pinLayer.Add(pinOverlay);
        map1.Layers.Add(pinLayer);

然后这些图片被清除并加载新的缩放级别

  private void loadZoomLevel13Pics()
    {
        map1.Layers.Clear();
        MapLayer pinLayer = new MapLayer();
        // Create a new empty Pushpin
        // Beny Sur- Mer War Cemetary 
        MapOverlay pinOverlay = new MapOverlay();
        // Add the location of the Pushpin using latitude and longitude.
        pinOverlay.GeoCoordinate = new GeoCoordinate(49.33783000, -0.45215600);
        //Image pinOverlayImage = new Image();
        pinOverlayImage.Source = new BitmapImage(new Uri("images/Hedgehog.png", UriKind.Relative));
        pinOverlay.Content = pinOverlayImage;
        pinOverlay.PositionOrigin = new Point(0.0, 0.0);
        pinOverlayImage.Opacity = 0.8;
        pinOverlayImage.Height = 30;
        pinOverlayImage.Width = 30;
        pinOverlayImage.Tap += pinOverlayImage_Tap;
        pinLayer.Add(pinOverlay);
        map1.Layers.Add(pinLayer); // THIS IS THE LINE CAUSING THE PROBLEM

所有图像都是全局声明的,因为它们在程序内的其他函数/方法中使用。

似乎它试图添加先前添加的相同层并且很难这样做,但是所有层都在方法的第一行被清除。

4

1 回答 1

3

我使用全局多边形而不是图像时遇到了同样的问题。问题是,即使您正在调用 map1.Layers.Clear(),它也不会在调用后立即完成,因此您需要创建一个新图像。一般来说,这可以通过不使用覆盖的全局/实例变量来解决。内容......只需每次声明它并将其分配给内容。

于 2013-10-14T19:03:57.170 回答