C# 尝试在缩放时重新添加图钉时发生WP8错误

C# 尝试在缩放时重新添加图钉时发生WP8错误,c#,windows-phone-8,C#,Windows Phone 8,当我尝试放大(按钮单击事件)时,我在尝试将图像/图层添加回地图时出错 我应该注意:我已经对代码进行了实质性的简化,以便更容易地找出错误(我似乎无法理解)。 每个缩放级别都有一组不同的图像,如果您想知道为什么我需要不断清除图层/图像,请将它们附加到该级别 每个图像/层/覆盖都是全局定义的(因此我可以在几种方法中使用它们) Image img1 = new Image(); Image img2 = new Image(); MapLayer lyr1 = new MapLay

当我尝试放大(按钮单击事件)时,我在尝试将图像/图层添加回地图时出错

我应该注意:我已经对代码进行了实质性的简化,以便更容易地找出错误(我似乎无法理解)。 每个缩放级别都有一组不同的图像,如果您想知道为什么我需要不断清除图层/图像,请将它们附加到该级别

每个图像/层/覆盖都是全局定义的(因此我可以在几种方法中使用它们)

 Image img1 = new Image();
     Image img2 = new Image();
     MapLayer lyr1 = new MapLayer();
     MapLayer lyr2 = new MapLayer();
     MapOverlay ovrly1 = new MapOverlay();
     MapOverlay ovrly2 = new MapOverlay();
当页面以单独的方法加载时,将初始化其中的每一项:

     private void initializeImages()
     {
         ovrly1.GeoCoordinate = new GeoCoordinate(49.33783000, -0.45215600);
         img1.Source = new BitmapImage(new Uri("images/push-pin.png", UriKind.Relative));
         ovrly1.Content = img1;
         ovrly1.PositionOrigin = new Point(0.0, 0.0);
         img1.Opacity = 0.8;
         img1.Height = 30;
         img1.Width = 30;
         img1.Tap += img1_Tap;
         ovrly2.GeoCoordinate = new GeoCoordinate(49.35783000, -0.45425600);
         img2.Source = new BitmapImage(new Uri("images/push-pin.png", UriKind.Relative));
         ovrly2.Content = img2;
         ovrly2.PositionOrigin = new Point(0.0, 0.0);
         img2.Opacity = 0.8;
         img2.Height = 30;
         img2.Width = 30;
         img2.Tap += img2_Tap;
     }
当我第一次尝试缩放按钮时,单击按钮即可。但是,当我尝试缩放按钮时,会出现错误:

     private void Button_Click_1(object sender, RoutedEventArgs e)
     {
         map1.ZoomLevel += 1;
         map1.Layers.Clear();

         lyr1.Add(ovrly1);  // ERROR OCCURS HERE
         map1.Layers.Add(lyr1);

         lyr2.Add(ovrly2);
         map1.Layers.Add(lyr2);
     }
当我在Button_Click事件中声明所有图像/覆盖层/层“本地”时,此错误消失。但我不能这样做,否则我将无法访问方法之外的图像


任何帮助都将不胜感激。

我认为问题在于您在完全相同的位置添加了许多重叠

此外,在“按钮单击”事件中,您清除了地图的“图层”元素,但对每个图层都不执行相同的操作,每次都向已经有一个图层的图层添加新元素。由于在相同位置添加元素,因此会出现错误

如果两个元素具有不同的
地理坐标值,则以下代码应起作用:

    private void Botoia_Click(object sender, RoutedEventArgs e)
    {
        map1.ZoomLevel += 1;
        map1.Layers.Clear();

        lyr1.Clear();
        lyr2.Clear();

        lyr1.Add(ovrly1);
        map1.Layers.Add(lyr1);

        lyr2.Add(ovrly2);
        map1.Layers.Add(lyr2);
    }

错误说明了什么?