【问题标题】:Silverlight - Add Pushpin to Bing Maps via C#Silverlight - 通过 C# 将图钉添加到 Bing 地图
【发布时间】:2011-01-10 21:10:00
【问题描述】:

我开始使用 Silverlight Bing 地图控件。如何使用 C# 以编程方式将图钉添加到地图?

谢谢!

【问题讨论】:

    标签: silverlight bing-maps


    【解决方案1】:

    未知,

    这是构建 Silverlight 应用程序的分步帖子,该应用程序显示美国的 Bing 地图,并在每个点击的位置添加一个图钉。只是为了好玩,当您浏览图钉时,我添加了一些“悬停”功能。

    第 1 步:使用 Visual Studio 创建示例 Silverlight 应用程序(文件/新建项目/Silverlight 应用程序)

    第 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 的 Grid 中:

    <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 SoftwareYinYangMoney

    【讨论】:

    • 我没有看到图钉工作 - 你如何连接事件?
    • 事件在第 6 步开始时连接起来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多