2013-01-16 95 views
0

我的Windows 8手機應用程序使用mapoverlay以編程方式將圖像(作爲pin)添加到地圖中的特定座標。現在我想在點擊圖片後添加一個工具提示(pin)。有誰知道如何解決這一問題?如何在地圖windows phone 8中添加工具提示?

pinIMG = new Image(); 
       pinIMG.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Assets/pin.png", UriKind.Relative)); 

MapOverlay myLocationOverlay = new MapOverlay(); 
       myLocationOverlay.Content = pinIMG; 
       myLocationOverlay.PositionOrigin = new Point(0.5, 0.5); 
       myLocationOverlay.GeoCoordinate = new GeoCoordinate(57.724611, 12.938945); 

MapLayer myLocationLayer = new MapLayer(); 
myLocationLayer.Add(myLocationOverlay); 
MyMap.Layers.Add(myLocationLayer); 

回答

0

不是將圖像添加到MapOverlay,而是添加一個ExpanderView控件,該控件可擴展以添加其他數據。您需要下載Windows Phone Toolkit才能獲得ExpanderView控件。當你在它上面時,你可能想切換到使用Map Extensions Pushpins來獲得數據綁定支持。

private void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    MapLayer myLayer = new MapLayer(); 
    MapOverlay myOverlay = new MapOverlay() 
          { 
           GeoCoordinate = new GeoCoordinate(-17, 133) 
          }; 
    ExpanderView expander = new ExpanderView(); 

    expander.Header = new Image() 
    { 
     Source = new BitmapImage(new Uri("Assets/ApplicationIcon.png", UriKind.Relative)), 
     Width = 200 
    }; 
    expander.ItemsSource = new[] 
    { 
     new TextBlock{ Text = "HELLO"} 
    }; 

;

myOverlay.Content = expander; 
    myLayer.Add(myOverlay); 
    myMap.Layers.Add(myLayer); 
} 

當我們運行這個示例中,我們可以看到在澳大利亞以下圖標:

Icon over australia

一旦我們點擊TI,我們可以看到我們的「Hello」文本顯示:

Text over australia

幾個ceavets:上面的代碼示例是可怕的。 ExpanderView是爲了同時使用ItemSource和IteTemplate來進行多項數據綁定。將它用於單個項目並不是很好。上面的代碼示例也很糟糕,因爲它在C#代碼中創建UI元素,而使用Map Extensions可能會將此代碼放入XAML中。

相關問題