0

私のWindows 8電話アプリは、mapoverlayを使用して、マップ内の特定の調整に画像を(ピンとして)プログラムで追加します。そして今、タップした後に画像(ピン)にツールチップを追加したいと思います。これを修正する方法を知っている人はいますか?

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);
4

1 に答える 1

0

MapOverlayに画像を追加する代わりに、データを追加するために展開するExpanderViewコントロールを追加することを検討してください。ExpanderViewコントロールを取得するには、 WindowsPhoneToolkitをダウンロードする必要があります。その間、 MapExtensionsPushpinsを使用してデータバインディングサポートを取得するように切り替えることをお勧めします。

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);
}

このサンプルを実行すると、オーストラリアの上に次のアイコンが表示されます。

オーストラリアの上のアイコン

そして、tiをクリックすると、「Hello」テキストが表示されます。

オーストラリアのテキスト

いくつかの注意点:上記のコードサンプルはひどいものです。ExpanderViewは、複数のアイテムのデータバインディングにItemSourceとIteTemplateの両方を使用することを目的としています。単一のアイテムにそれを使用するのは素晴らしいことではありません。上記のコードサンプルは、C#コードでUI要素を作成するため、ひどいものですが、Map Extensionsを使用すると、このコードをXAMLに配置できた可能性があります。

于 2013-01-17T19:07:53.323 に答える