12

SilverlightBingMapsコントロールを使い始めています。C#を使用してプログラムでプッシュピンをマップに追加するにはどうすればよいですか?

ありがとうございました!

4

1 に答える 1

22

わからない、

これは、米国の Bing マップを表示し、クリックされた各場所に画鋲を追加する Silverlight アプリを作成するための段階的な投稿です。楽しみのために、画鋲をブラウズするときに「ホバー」機能を追加しました。

ステップ 1 : Visual Studio でサンプル Silverlight アプリケーションを作成する (ファイル/新しいプロジェクト/Silverlight アプリケーション)

手順 2 : 2 つの Bing DLL 参照を Silverlight アプリケーション プロジェクトに追加する

Folder: C:\Program Files\Bing Maps Silverlight Control\V1\Libraries\
File 1: Microsoft.Maps.MapControl.dll
File 2: Microsoft.Maps.MapControl.Common.dll

ステップ 3 : MainPage.xaml を編集し、次の名前空間を先頭に追加します。

xmlns:Maps="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl"

ステップ 4 : MainPage.xaml を編集し、次のコードを UserControl のグリッド内に配置します。

<Maps:Map x:Name="x_Map" Center="39.36830,-95.27340" ZoomLevel="4" />

ステップ 5 : MainPage.cs を編集し、次の using ステートメントを追加します。

using Microsoft.Maps.MapControl;

ステップ 6 : MainPage.cs を編集し、MainPage クラスを次のコードに置き換えます。

public partial class MainPage : UserControl
{
    private MapLayer m_PushpinLayer;

    public MainPage()
    {
        InitializeComponent();
        base.Loaded += OnLoaded;
    }

    private void OnLoaded(object sender, RoutedEventArgs e)
    {
        base.Loaded -= OnLoaded;

    m_PushpinLayer = new MapLayer();
    x_Map.Children.Add(m_PushpinLayer);
        x_Map.MouseClick += OnMouseClick;
    }

    private void AddPushpin(double latitude, double longitude)
    {
        Pushpin pushpin = new Pushpin();
        pushpin.MouseEnter += OnMouseEnter;
        pushpin.MouseLeave += OnMouseLeave;
        m_PushpinLayer.AddChild(pushpin, new Location(latitude, longitude), PositionOrigin.BottomCenter);
    }

    private void OnMouseClick(object sender, MapMouseEventArgs e)
    {
        Point clickLocation = e.ViewportPoint;
        Location location = x_Map.ViewportPointToLocation(clickLocation);
        AddPushpin(location.Latitude, location.Longitude);
    }

    private void OnMouseLeave(object sender, MouseEventArgs e)
    {
        Pushpin pushpin = sender as Pushpin;

        // remove the pushpin transform when mouse leaves
        pushpin.RenderTransform = null;
    }

    private void OnMouseEnter(object sender, MouseEventArgs e)
    {
        Pushpin pushpin = sender as Pushpin;

        // scaling will shrink (less than 1) or enlarge (greater than 1) source element
        ScaleTransform st = new ScaleTransform();
        st.ScaleX = 1.4;
        st.ScaleY = 1.4;

        // set center of scaling to center of pushpin
        st.CenterX = (pushpin as FrameworkElement).Height / 2;
        st.CenterY = (pushpin as FrameworkElement).Height / 2;

        pushpin.RenderTransform = st;
    }
}

ステップ 7 : ビルドして実行する!

乾杯、ジム・マッカーディ

Face To Face ソフトウェアYinYangMoney

于 2010-01-29T19:07:03.837 に答える