0

XAML と C# を使用する Windows 8 アプリで、緯度と経度のコレクションを Bing マップの画鋲として追加するのに苦労しています。

マップの右タップなどのイベント ハンドラーを使用して画鋲を 1 つずつ追加すると、正常に機能します。

XAML は次のとおりです。

 <bm:Map x:Name="myMap" Grid.Row="0" MapType="Road" ZoomLevel="14" Credentials="{StaticResource BingMapAPIKey}" ShowTraffic="False" Tapped="map_Tapped" >
      <bm:Map.Center>
            <bm:Location Latitude="-37.812751" Longitude="144.968204" />
      </bm:Map.Center>
 </bm:Map>

そして、ここにハンドラーがあります:

    private void map_Tapped(object sender, TappedRoutedEventArgs e)
    {
        // Retrieves the click location
        var pos = e.GetPosition(myMap);
        Bing.Maps.Location location;
        if (myMap.TryPixelToLocation(pos, out location))
        {
            // Place Pushpin on the Map
            Pushpin pushpin = new Pushpin();
            pushpin.RightTapped += pushpin_RightTapped;
            MapLayer.SetPosition(pushpin, location);
            myMap.Children.Add(pushpin);

            // Center the map on the clicked location
            myMap.SetView(location);
        }
    }

上記のすべての作品。地図をタップすると、新しい画鋲が追加されます。

ここで、リストを反復してページを初期化するときに画鋲を追加しようとすると、新しい画鋲がそれぞれ前の画鋲を上書きしているかのように、リストの最後の画鋲のみがマップに表示されます。私が使用するコードは次のとおりです。

 protected override async void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
 {
      ...

      // The Venue class is a custom class, the Latitude & Logitude are of type Double
      foreach (Venue venue _venues)
      {
           Bing.Maps.Location location = new Location(venue.Latitude, venue.Longitude);

           // Place Pushpin on the Map
           Pushpin pushpin = new Pushpin();
           pushpin.RightTapped += pushpin_RightTapped;
           MapLayer.SetPosition(pushpin, location);
           myMap.Children.Add(pushpin);

           // Center the map on the clicked location
           myMap.SetView(location);
      }

      ...
 }

ご覧のとおり、同じコードを使用していますが、LoadState メソッドの最後では、マップには最後の場所のみが表示されます。ご参考までに、foreach ループは場所ごとに完全に実行されます。

これを機能させる方法、またはマップの子を Pushpin オブジェクトの ObservableCollection に直接バインドする方法はありますか? とても近くにいるような気がしますが、何を見逃したのかわかりません。

助けてください !

4

1 に答える 1