信息
您所需的主题如下所示。但此主题未包含在此库中。

如何将 UIElement 添加到 Windows Phone 8 中的地图控件

2014/6/18

仅适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1

在本主题中,我们描述了如何向 Windows Phone 8 的地图上添加 UIElement(例如图像、形状和控件)。

Icon to indicate an SDK sample

要获取演示本主题中描述的某些任务的示例,请下载简单地图控件示例

对于地图 API 的有用扩展(包括图钉),请下载 Windows Phone 工具包

本主题包括以下部分。

在本节中,我们将一个包含 RectanglePolygonGrid 元素添加到 Map 中。

向地图中的位置添加矩形的步骤

  1. 在 Visual Studio 中,创建新的名为 MapsApplication 的 Windows Phone 8 项目。

  2. “MainPage.xaml”中,使用以下代码替换名为 LayoutRoot 的网格。它将创建一个名为“MyMap”的 Map 控件。有关添加 Map 控件的更多信息,请参见如何将地图控件添加到 Windows Phone 8 中的页面

    
    <!--LayoutRoot is the root grid where all page content is placed-->
        <Grid x:Name="LayoutRoot" Background="Transparent">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
    
            <!--TitlePanel contains the name of the application and page title-->
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                <TextBlock x:Name="ApplicationTitle" Text="Maps" Style="{StaticResource PhoneTextNormalStyle}"/>
                <TextBlock x:Name="PageTitle" Text="MapOverlay" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
            </StackPanel>
    
            <!--ContentPanel - place additional content here-->
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <maps:Map x:Name="MyMap" Center="47.6097, -122.3331" ZoomLevel="10" />
            </Grid>
        </Grid>
    
  3. MainPage.xaml.cs 中,添加以下 using 指令。

    
    using Microsoft.Phone.Maps.Controls;
    using System.Device.Location;
    
  4. MainPage() 构造函数中,添加以下代码以创建一个包含 RectanglePolygonGrid 元素。

    
    //Creating a Grid element.
    
    Grid MyGrid = new Grid();
    MyGrid.RowDefinitions.Add(new RowDefinition());
    MyGrid.RowDefinitions.Add(new RowDefinition());
    MyGrid.Background = new SolidColorBrush(Colors.Transparent);
    
    //Creating a Rectangle
    Rectangle MyRectangle = new Rectangle();
    MyRectangle.Fill = new SolidColorBrush(Colors.Black);
    MyRectangle.Height = 20;
    MyRectangle.Width = 20;
    MyRectangle.SetValue(Grid.RowProperty, 0);
    MyRectangle.SetValue(Grid.ColumnProperty, 0);
    
    //Adding the Rectangle to the Grid
    MyGrid.Children.Add(MyRectangle);
    
    //Creating a Polygon
    Polygon MyPolygon = new Polygon();
    MyPolygon.Points.Add(new Point(2,0));
    MyPolygon.Points.Add(new Point(22,0));
    MyPolygon.Points.Add(new Point(2,40));
    MyPolygon.Stroke = new SolidColorBrush(Colors.Black);
    MyPolygon.Fill = new SolidColorBrush(Colors.Black);
    MyPolygon.SetValue(Grid.RowProperty, 1);
    MyPolygon.SetValue(Grid.ColumnProperty, 0);
    
    //Adding the Polygon to the Grid
    MyGrid.Children.Add(MyPolygon);
    
    
    
  5. MainPage() 构造函数中,创建一个 MapOverlay 并将 Grid 元素添加到 MapOverlay

    
    //Creating a MapOverlay and adding the Grid to it.
    MapOverlay MyOverlay = new MapOverlay();
    MyOverlay.Content = MyGrid;
    
    
    
  6. 设置 MyOverlayGeoCoordinate 属性,以将网格元素放置在地图上指定的 Geocoordinate 位置。

    MyOverlay.GeoCoordinate = new GeoCoordinate(47.6097, -122.3331);
    
    
  7. 设置 MyOverlayPositionOrigin 属性,以指定要固定到地图的矩形的位置。

    MyOverlay.PositionOrigin = new Point(0,0.5);
    
    
  8. 创建一个名为“MyLayer”的 MapLayer 并向其添加 MyOverlay。

    
    //Creating a MapLayer and adding the MapOverlay to it
    MapLayer MyLayer = new MapLayer();
    MyLayer.Add(MyOverlay);
    MyMap.Layers.Add(MyLayer);
    
    

显示: