2012-10-23 15 views
1

我使用C#製作一個Windows商店應用和需要一點幫助,當一個地圖上的圖釘被竊聽的方法。 到目前爲止,我創建一個名爲currentPin我在XAML代碼中創建圖釘。我也在這裏爲Tapped事件做了一個參考,叫做pushpin_Tapped。使用冰在Windows商店應用多種新圖釘如何實現方法映射

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> 
     <bm:Map x:Name="MyMap" Credentials="{StaticResource BingMapsApiKey}" Holding="map_Held"> 

      <bm:Map.Children> 
       <bm:Pushpin x:Name="pin" Tapped="pushpinTapped"> 

       </bm:Pushpin> 
      </bm:Map.Children> 
     </bm:Map> 
    </Grid> 

然後將currentPin放置在MainPage.xaml.cs代碼的OnNavigatedTo方法中的當前位置。我還創建了此圖釘被挖掘時的方法。在這種方法我表明,當currentPin橫置以一個對話框。

private async void pushpinTapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e) 
      { 

       var x = MapLayer.GetPosition(pin); 
       MessageDialog dialog = new MessageDialog("You are here " + x.Latitude + " " + x.Longitude); 
       await dialog.ShowAsync(); 
      } 

然後我有一個放置在一個位置一個新的圖釘時,地圖是由下面的用戶,代碼舉行的方法:

private void map_Held(object sender, HoldingRoutedEventArgs e)   
{    
    Debug.WriteLine("You held at" + DateTime.Now.ToString() + "" + e.GetPosition(MyMap));    
    var pos = e.GetPosition(MyMap);    
    Location location;    
    MyMap.TryPixelToLocation(pos, out location);       
    Pushpin pin = new Pushpin();    
    MyMap.Children.Add(pin);       
    MapLayer.SetPosition(pin, location);      
} 

我知道這可能是盯着我的臉,但我「M消隱如何得到一個消息框或對話框,或任何時候每一這些新的引腳被竊聽的情況發生。請有人能點亮一些光嗎? 謝謝, 艾梅

+0

編輯答案 – Mayank

回答

1

在Map_Held,添加處理程序竊聽事件......

private void map_Held(object sender, HoldingRoutedEventArgs e)   
{    
    Debug.WriteLine("You held at" + DateTime.Now.ToString() + "" + e.GetPosition(MyMap));    
    var pos = e.GetPosition(MyMap);    
    Location location;    
    MyMap.TryPixelToLocation(pos, out location);       
    Pushpin newpin = new Pushpin();    
    newpin.Tapped += pushpin_Tapped; 
    MyMap.Children.Add(newpin);       
    MapLayer.SetPosition(newpin, location);      
} 

,並在挖掘事件處理程序,參考你的腳從pin更改爲以下。

private async void pushpinTapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e) 
{ 
    PushPin tappedpin = sender as PushPin; // gets the pin that was tapped 
    if(null == tappedpin) return;   // null check to prevent bad stuff if it wasn't a pin. 
    var x = MapLayer.GetPosition(tappedpin); 
    MessageDialog dialog = new MessageDialog("You are here " + x.Latitude + " " + x.Longitude); 
    await dialog.ShowAsync(); 
} 
+0

啊,非常感謝你! –

2
private void map_Held(object sender, HoldingRoutedEventArgs e)   
{    
    Debug.WriteLine("You held at" + DateTime.Now.ToString() + "" + e.GetPosition(MyMap));    
    var pos = e.GetPosition(MyMap);    
    Location location;    
    MyMap.TryPixelToLocation(pos, out location);       
    Pushpin pin = new Pushpin(); 
    pin.Tapped += pushpinTapped; // <<<<<<=====LOOK AT THIS 
    MyMap.Children.Add(pin);       
    MapLayer.SetPosition(pin, location);      
} 
相關問題