Silverlight学习笔记十七BingMap(三)之地图的地区标识

  如果我们需要在Bing Maps中加入一个小图钉标记,该如何实现了?

  Bing Maps控件已经为我们提供了这个功能,在Microsoft.Maps.MapControl名称空间下提供了实现图钉应用的图钉层Pushpin类用该类来实现普通标识

   在Xaml中添加<map:Pushpin Location="33.845881352,105.165628188471"/>这样就简单地实现了一个图钉标识。但我们平时想用图片或其它的标识,那就必须在Xaml中加 

<map:MapLayer x:Name="myMapLayer"></map:MapLayer>标记

下面是一个图片的标识

   /// <summary>
        /// 首先定义Image对象的实例用于显示图片
        /// 定义PositionOrigin的实例用于
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

  private void btnMapLayer_Click(object sender, RoutedEventArgs e)
        {
            Image image = new Image();
            image.Source = new BitmapImage(new Uri("images/China.jpg", UriKind.Relative));
            image.Stretch = Stretch.None;

            //图片域
            image.ImageFailed += image_imageFiled;
            PositionOrigin position = new PositionOrigin(1.0, 1.0);

    //将图片按位置33.845881352, 105.165628188471显示在地图中myMapLayer是我们在Xaml定义的一个映射层。
            this.myMapLayer.AddChild(image, new Location(33.845881352, 105.165628188471), position);
        }

    //异常事件

        private void image_imageFiled(object sender, ExceptionRoutedEventArgs e)
        {

        }

效果如图

  Bing Maps Silverlight Control支持用户自定义绘制多边形(Polygon)图形,包括三角形、四边形(矩形、菱形)、以及其他更多多边形的图形绘制。多边形说简单点就是一个由多条边组成的有一定规则的图形,比如三角形就是由三条边组成,我们要在地图上绘制三角形需要知道三个顶点的坐标值(精度和纬度)。

  下面是一个三角形的标识

    //MapPolygon是用来绘制多边形的类
            MapPolygon polygon = new MapPolygon();

    //给多边形填充颜色

            polygon.Fill = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Red);

            polygon.StrokeThickness = 5;

            polygon.Opacity = 0.7;

            polygon.Locations = new LocationCollection() {

          //三角形的第一个顶点坐标

                            new Location(34.9294740237661,107.506492025863),

          //三角形的第二个顶点坐标

                            new Location(37.7814222409819, 105.979148275863),

          //三角形的第三个顶点坐标

                            new Location(40.2865067209496, 109.219382650863) };

            this.myMap.Children.Add(polygon);

 注:如果是四边形的话,就是

polygon.Locations = new LocationCollection() {

          //四边形的第一个顶点坐标

                            new Location(34.9294740237661,107.506492025863),

          //四边形的第二个顶点坐标

                            new Location(37.7814222409819, 105.979148275863),

          //四边形的第三个顶点坐标

                            new Location(40.2865067209496, 109.219382650863)

),

          //四边形的第四个顶点坐标

                            new Location(43.2865067209496, 44.219382650863)

};

效果如图

源码:https://files.cnblogs.com/salam/SlBindMapDemo.rar

原文地址:https://www.cnblogs.com/salam/p/1787232.html