拡大しようとすると (Button_Click_1 イベント)、画像/レイヤーをマップに追加しようとするとエラーが発生します。
注: エラーを見つけやすくするために、コードを大幅に単純化しました (私には理解できないようです)。レイヤー/画像を継続的にクリアする必要がある理由を疑問に思っている場合に備えて、ズーム レベルごとに異なる画像セットが関連付けられています。
画像/レイヤー/オーバーレイのそれぞれはグローバルに定義されている (いくつかの方法で使用できるようにするため)
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;
}
初めて Button_Click をズームしようとすると、正常に動作します。しかし、それ以外にズームしようとすると、エラーが発生します。
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 イベント内ですべての画像/オーバーレイ/レイヤーを「ローカルに」宣言すると消えます。そうしないと、メソッドの外で画像にアクセスできなくなります。
どんな助けでも大歓迎です。