【问题标题】:How do i add a pushpin to a Windows Phone 8.1 Map Control?如何将图钉添加到 Windows Phone 8.1 地图控件?
【发布时间】:2014-08-09 19:44:13
【问题描述】:

我一直在寻找有关如何执行此任务的示例,但是我无法找到一个明确的示例。有人可以指出我正确的方向。我迷路了……

编辑/更新:

我设法按照以下示例添加了一些标记: http://www.microsoftvirtualacademy.com/Content/ViewContent.aspx?et=8698&m=8686&ct=29035

但是,正如 MSDN 文档所述

不保证会显示 MapIcon。它可能隐藏时 遮挡地图上的其他元素或标签。可选标题 不保证会显示 MapIcon。如果看不到文字, 通过增加 ZoomLevel 属性的值来缩小 地图控制。

无论如何我都需要一些能够展示的东西,几乎不可能找到一个简单的例子来说明如何执行这个简单的任务! 我必须说我使用的是最新的 Maps sdk,而不是之前的 8.0。

【问题讨论】:

    标签: xaml windows-phone maps windows-phone-8.1 pushpin


    【解决方案1】:

    我可以使用以下代码做到这一点

       public void AddPushpin(BasicGeoposition location, string text)
            {
                var pin = new Grid()
                {
                    Width = 50,
                    Height = 50,
                    Margin = new Windows.UI.Xaml.Thickness(-12)
                };
    
                pin.Children.Add(new Ellipse()
                {
                    Fill = new SolidColorBrush(Colors.DodgerBlue),
                    Stroke = new SolidColorBrush(Colors.White),
                    StrokeThickness = 3,
                    Width = 50,
                    Height = 50
                });
    
                pin.Children.Add(new TextBlock()
                {
                    Text = text,
                    FontSize = 12,
                    Foreground = new SolidColorBrush(Colors.White),
                    HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Center,
                    VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Center
                });
    
                MapControl.SetLocation(pin, new Geopoint(location));
                Map_MainMap.Children.Add(pin);
            }
    

    【讨论】:

      【解决方案2】:

      Windows phone 8.1 有 2 个不同的系统。一个是 Silverlight,另一个是 Win RT。

      private void AddMapIcon()
      {
          MapIcon MapIcon1 = new MapIcon();
          MapIcon1.Location = new Geopoint(new BasicGeoposition() { Latitude = 47.620,
           Longitude = -122.349 });
          MapIcon1.NormalizedAnchorPoint = new Point(0.5, 1.0);
          MapIcon1.Title = "Space Needle";>>
          MapControl1.MapElements.Add(MapIcon1);
      }
      

      这是 Win RT 版本,所以如果你在 Silverlight 中使用,它将无法工作。

      也许您可以详细说明您的问题和您的 Windows Phone 8.1 版本。

      【讨论】:

        【解决方案3】:

        你试过什么?

        你读过这篇关于Windows Phone 8.1 for Developers – Maps的文章

        引自文章:

        另一件改变的是图钉之类的对象 添加。旧的 MapLayer 和 MapOverlay 不见了。现在您只需添加 MapControl.Children 集合的控件。

        还有一个带有代码示例的good article on MSDN

        private void AddMapIcon()
        {
            MapIcon MapIcon1 = new MapIcon();
            MapIcon1.Location = new Geopoint(new BasicGeoposition() { Latitude = 47.620,
              Longitude = -122.349 });
            MapIcon1.NormalizedAnchorPoint = new Point(0.5, 1.0);
            MapIcon1.Title = "Space Needle";
            MapControl1.MapElements.Add(MapIcon1);
        }
        

        【讨论】:

        • 我之前尝试过这个例子,但没有成功。示例中的代码似乎不准确。
        【解决方案4】:

        我用于通用应用版本地图的 XAML 以显示数据绑定图钉:

        命名空间:

        xmlns:maps="using:Windows.UI.Xaml.Controls.Maps"
        

        XAML:

        <maps:MapControl
             Height="800" Width="480" DesiredPitch="45" Center="{Binding MapCenter, Converter={StaticResource CoordinatesListToGeopointConverter}}">
            <maps:MapItemsControl x:Name="myMap" ItemsSource="{Binding Data.Features}">
                <maps:MapItemsControl.ItemTemplate>
                    <DataTemplate>
                        <userControls:CustomPushPin maps:MapControl.Location="{Binding Geometry.Coordinates, Converter={StaticResource CoordinatesListToGeopointConverter}}"
                            Fill="{Binding Properties.Mag, Converter={StaticResource MagnitudeToSolidColorBrushConverter} }"
                            BorderThickness="2"
                            Size="{Binding Properties.Mag, Converter={StaticResource MagnitudeToWidthConverter} }"
                            Magnitude="{Binding Properties.Mag}"
                            TapCommand="{Binding DataContext.PinTappedCommand, ElementName=Hub}" CommandParameter="{Binding }"/>
        
                    </DataTemplate>
                </maps:MapItemsControl.ItemTemplate>
            </maps:MapItemsControl>
            <maps:MapControl.ColorScheme>
                <maps:MapColorScheme >Light</maps:MapColorScheme>
            </maps:MapControl.ColorScheme>
        </maps:MapControl>
        

        我使用自定义图钉(对于这个应用程序,它的大小和颜色取决于绑定到它的数据),但它们总是出现在地图上。

        希望对您有所帮助,如果您需要任何具体细节,请告诉我。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多