Попытка добавить оверлеи к карте ошибка

Я только что удалил слои из своей картографической программы, и когда я пытаюсь добавить новый слой, я получаю это сообщение об ошибке.

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

Все изображения объявлены глобально, потому что они используются в других функциях/методах внутри программы.

Похоже, он пытается добавить тот же слой, который был добавлен ранее, и испытывает трудности с этим, но все слои очищаются в первой строке метода.


person Community    schedule 05.06.2013    source источник
comment
Включите код в свой вопрос   -  person Alaa Masoud    schedule 05.06.2013
comment
Хорошо, я сделал @AlaaMasoud   -  person    schedule 10.06.2013
comment
Вам когда-нибудь удавалось решить эту проблему, поскольку я вижу ту же проблему в своем приложении?   -  person Adam Cobb    schedule 28.08.2013


Ответы (1)


У меня была такая же проблема с использованием глобального многоугольника вместо изображения. Проблема в том, что даже если вы вызываете map1.Layers.Clear(), это не выполняется сразу после вызова, поэтому вам нужно создать новое изображение. В общем, это можно исправить, не используя глобальные/экземплярные переменные для оверлея. Контент... просто объявляйте его каждый раз и назначайте его Контенту.

person brendan    schedule 14.10.2013