zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    关于c#中的委托和事件
    Unity3d中默认函数调用顺序(MonoBehaviour)
    u3d 摄像机详解
    u3d中的坐标系
    u3d中的向量 vector3 vector2
    u3d中的INput
    C#构造函数
    解析C#中[],List,Array,ArrayList的区别及应用
    Mybatis(七) mybatis的逆向工程的配置详解
    Mybatis(六) Spring整合mybatis
  • 原文地址:https://www.cnblogs.com/salam/p/1787232.html
Copyright © 2011-2022 走看看