zoukankan      html  css  js  c++  java
  • 百度地图API(一)

    开题

      百度地图API已经做了好久了,自己一个人做完的这个项目,一直想记录的,拖延症爆发,一直到现在,而且前面MVC还没写完,主要是卡在授权,底层和页面功能都明白了,但是就是授权,整个项目的开始没搞懂,也够郁闷的,也就把MVC放放,一边看,一边写吧,先把API写完~

    百度地图控件

      项目是用的WPF,地图控件用的到WPF的UserControl,结构如下

      其中BaiduMap_WPF是项目,BaiduMapControl是百度地图控件,EntityAgent是定义的实体,SimpleMvvmToolkit-WPF是小型Mvvm,为什么没有EF?是因为数据获取是通过WebService的方法获取的坐标信息,因此省略了一些东西,不过这本来就是主要写百度地图API,有没有都无所谓。

      地图控件的文件比较多,大体分为:

      其中,MapBase文件夹定义的是各种控件基础类,MapLayer文件夹定义的是各种覆盖物基础类,MapService文件夹定义的是各种地图服务的基础类,最后的MapTools文件夹定义的是地图上各种控件基础类,BaiduMap.xaml是百度地图WPF的用户控件UserControl。

    MapBase

      类Point,点

     1     /// <summary>
     2     /// 3     /// </summary>
     4     public class Point
     5     {
     6         /// <summary>
     7         /// 构造函数
     8         /// </summary>
     9         /// <param name="m_lng">经度</param>
    10         /// <param name="m_lat">纬度</param>
    11         public Point(string m_lng, string m_lat)
    12         {
    13             lng = m_lng;
    14             lat = m_lat;
    15         }
    16 
    17         #region 字段
    18 
    19         string lng;
    20         string lat;
    21 
    22         #endregion
    23 
    24 
    25         #region 属性
    26 
    27         /// <summary>
    28         /// 经度
    29         /// </summary>
    30         public string Lng
    31         {
    32             get { return lng; }
    33             set { lng = value; }
    34         }
    35 
    36         /// <summary>
    37         /// 纬度
    38         /// </summary>
    39         public string Lat
    40         {
    41             get { return lat; }
    42             set { lat = value; }
    43         }
    44 
    45         #endregion
    46     }
    View Code

      枚举MapControlType,控件的类型

     1     /// <summary>
     2     /// 控件的类型
     3     /// </summary>
     4     public enum MapControlType
     5     {
     6         NavigationControl,//平移缩放控件
     7         OverviewMapControl,//缩略图控件
     8         ScaleControl,//比例尺控件
     9         MapTypeControl,//地图类型控件
    10         CopyrightControl //版权控件
    11     }
    View Code

      类MapControl,地图控件,需要注意的是在每个私有方法中,w.InvokeScript("");引号中的方法,是html的js方法,放在api.js文件中。

      1     /// <summary>
      2     /// 地图控件类
      3     /// </summary>
      4     public class MapControl
      5     {
      6         #region properties
      7 
      8         /// <summary>
      9         /// 地图中心的经度
     10         /// </summary>
     11         private string map_lng;
     12 
     13         /// <summary>
     14         /// 地图中心的纬度
     15         /// </summary>
     16         private string map_lat;
     17 
     18         /// <summary>
     19         /// 地图的层数
     20         /// </summary>
     21         private int map_size;
     22 
     23         #endregion
     24 
     25         private MapControlType m_type;
     26 
     27         /// <summary>
     28         /// 构造函数 -- 清除所有
     29         /// </summary>
     30         public MapControl()
     31         { 
     32         }
     33 
     34         /// <summary>
     35         /// 构造函数
     36         /// </summary>
     37         /// <param name="type"></param>
     38         public MapControl(MapControlType type)
     39         {
     40             m_type = type;
     41         }
     42 
     43         /// <summary>
     44         /// 构造函数 - - 地图中心移动
     45         /// </summary>
     46         /// <param name="_lat"></param>
     47         /// <param name="_lng"></param>
     48         /// <param name="_mapSize"></param>
     49         public MapControl(string _lng,string _lat,int _mapSize)
     50         {
     51             map_lat = _lat;
     52             map_lng = _lng;
     53             map_size = _mapSize;
     54         }
     55 
     56         #region 公共方法
     57 
     58         /// <summary>
     59         /// 将地图中心移动到指定位置
     60         /// </summary>
     61         /// <param name="w"></param>
     62         public void MoveMapTo(WebBrowser w)
     63         {
     64             w.InvokeScript("MoveMapTo", new Object[] { map_lng, map_lat, map_size });
     65         }
     66 
     67         /// <summary>
     68         /// 清除所有覆盖物
     69         /// </summary>
     70         /// <param name="w"></param>
     71         public void ClearAllOverlay(WebBrowser w)
     72         {
     73             w.InvokeScript("ClearAllOverlay");
     74         }
     75 
     76 
     77         public void AddMapControl(WebBrowser w)
     78         {
     79 
     80         }
     81 
     82         /// <summary>
     83         /// 向地图添加地图控件的方法
     84         /// </summary>
     85         public void AddControl(WebBrowser w)
     86         {
     87             switch (m_type)
     88             {
     89                 case MapControlType.NavigationControl:
     90                     AddNavigationControl(w);//添加平移缩放控件
     91                     break;
     92                 case MapControlType.MapTypeControl:
     93                     AddMapTypeControl(w);//添加地图类型控件
     94                     break;
     95                 case MapControlType.ScaleControl:
     96                     AddScaleControl(w);//添加比例尺控件
     97                     break;
     98                 case MapControlType.OverviewMapControl:
     99                     AddOverviewMapControl(w);//添加缩略图控件
    100                     break;
    101                 case MapControlType.CopyrightControl:
    102                     AddCopyrightControl(w);//添加版权控件
    103                     break;
    104             }
    105         }
    106 
    107         #endregion
    108 
    109         #region 私有方法 加载各种控件
    110 
    111         /// <summary>
    112         /// 加载版权控件
    113         /// </summary>
    114         /// <param name="w"></param>
    115         private void AddCopyrightControl(WebBrowser w)
    116         {
    117             w.InvokeScript("AddCopyrightControl");
    118         }
    119 
    120         private void AddOverviewMapControl(WebBrowser w)
    121         {
    122             w.InvokeScript("AddOverviewMapControl");
    123         }
    124 
    125         private void AddScaleControl(WebBrowser w)
    126         {
    127             w.InvokeScript("AddScaleControl");
    128         }
    129 
    130         private void AddMapTypeControl(WebBrowser w)
    131         {
    132             w.InvokeScript("AddMapTypeControl");
    133         }
    134 
    135         private void AddNavigationControl(WebBrowser w)
    136         {
    137             w.InvokeScript("AddNavigationControl");
    138         }
    139 
    140         
    141         #endregion
    142     }
    View Code

    MapLayer覆盖物

      类Cirle,圆,地图上添加一个圆形覆盖物

     1     /// <summary>
     2     /// 圆类,用于向地图添加一个圆
     3     /// </summary>
     4     public class Cirle
     5     {
     6         #region 字段
     7 
     8         /// <summary>
     9         /// 坐标
    10         /// </summary>
    11         private MapBase.Point m_point;
    12 
    13         /// <summary>
    14         /// 半径
    15         /// </summary>
    16         private int m_r;
    17 
    18         #endregion
    19 
    20         #region 属性
    21 
    22         /// <summary>
    23         /// 坐标
    24         /// </summary>
    25         private MapBase.Point Point
    26         {
    27             get
    28             {
    29                 return m_point;
    30             }
    31             set
    32             {
    33                 m_point = value;
    34             }
    35         }
    36 
    37         /// <summary>
    38         /// 半径
    39         /// </summary>
    40         private int Radius
    41         {
    42             get
    43             {
    44                 return m_r;
    45             }
    46             set
    47             {
    48                 m_r = value;
    49             }
    50         }
    51 
    52         #endregion
    53 
    54         #region 构造函数
    55 
    56         public Cirle(MapBase.Point _point, int _radius)
    57         {
    58             m_point = _point;
    59             m_r = _radius;
    60         }
    61 
    62         #endregion
    63 
    64         #region 公共函数
    65 
    66         /// <summary>
    67         /// 添加圆
    68         /// </summary>
    69         /// <param name="w"></param>
    70         public void AddCirle(WebBrowser w)
    71         {
    72             w.InvokeScript("AddCirle", new Object[] { this.Point.Lng, this.Point.Lat, this.Radius });
    73         }
    74 
    75         #endregion
    76     }
    View Code

      类InfoWindow,消息窗口

     1     /// <summary>
     2     /// 信息窗口类,用于在地图上构建信息窗口
     3     /// </summary>
     4     public class InfoWindow
     5     {
     6 
     7         #region 字段
     8         private string m_content;
     9         private Point m_point;
    10         private Maker m_maker;
    11         #endregion
    12 
    13         #region 属性
    14         public Point Point
    15         {
    16             get { return m_point; }
    17             set { m_point = value; }
    18         }
    19         public string Content
    20         {
    21             get { return m_content; }
    22             set { m_content = value; }
    23         }
    24         #endregion
    25 
    26         #region 构造函数
    27         //根据坐标创建信息窗口
    28         public InfoWindow(string content, Point point)
    29         {
    30             m_content = content;
    31             m_point = point;
    32         }
    33         //根据Maker创建信息窗口
    34         public InfoWindow(string content, Maker maker)
    35         {
    36             m_content = content;
    37             m_maker = maker;
    38         }
    39         #endregion
    40 
    41         public void AddInfoWindow(WebBrowser w)
    42         {
    43             if (this.Point == null)
    44             {
    45                 w.InvokeScript("AddWindowMaker", new Object[] { this.m_maker.Point.Lng, this.m_point.Lat, this.Content });
    46             }
    47             else
    48             {
    49                 w.InvokeScript("AddInfoWindow", new Object[] { this.Point.Lng, this.Point.Lat, this.Content });
    50             }
    51         }
    52     }
    View Code

      类Label,标签

     1     /// <summary>
     2     /// 地图标签类,用于为地图添加标签
     3     /// </summary>
     4     public class Label
     5     {
     6         #region 字段
     7         private string m_content;
     8         private Maker m_maker;
     9         private MapBase.Point m_point;
    10         #endregion
    11 
    12         #region 属性
    13         public string Content
    14         {
    15             get { return m_content; }
    16             set { m_content = value; }
    17         }
    18         public MapBase.Point Point
    19         {
    20             get { return m_point; }
    21             set { m_point = value; }
    22         }
    23         public Maker Maker
    24         {
    25             get { return m_maker; }
    26             set { m_maker = value; }
    27         }
    28         #endregion
    29 
    30         #region 构造函数
    31 
    32         public Label(string _lng, string _lat, string _content)
    33         {
    34             m_point = new MapBase.Point(_lng, _lat);
    35             m_content = _content;
    36         }
    37 
    38         public Label(MapBase.Point point, string content)
    39         {
    40             m_point = point;
    41             m_content = content;
    42         }
    43 
    44         public Label(Maker maker, string content)
    45         {
    46             m_maker = maker;
    47             m_content = content;
    48         }
    49         #endregion
    50 
    51         #region 公共方法
    52 
    53         public void AddLabel(WebBrowser w)
    54         {
    55             w.InvokeScript("AddLabel", new Object[] { this.Point.Lng, this.Point.Lat, this.Content });
    56         }
    57 
    58         #endregion
    59     }
    View Code

      类Marker,覆盖物

      1     /// <summary>
      2     /// 地图覆盖物Maker类
      3     /// </summary>
      4     public class Maker
      5     {
      6         #region 字段
      7 
      8         private Point m_point;//坐标
      9         private MakerType m_type;//标注点类型
     10         private InfoWindow m_info;//信息窗口
     11         private Label m_label;//标签
     12         private WebBrowser m_w;
     13 
     14         #endregion
     15 
     16         #region 构造函数
     17         //普通和动画类型标注点的构造函数
     18         public Maker(Point point, MakerType type)
     19         {
     20             m_point = point;
     21             m_type = type;
     22         }
     23         //信息窗口类型的标注点的构造函数
     24         public Maker(Point point, MakerType type, InfoWindow info)
     25         {
     26             m_point = point;
     27             m_type = type;
     28             m_info = info;
     29         }
     30         //标签类型的标注点的构造函数
     31         public Maker(Point point, MakerType type, Label label)
     32         {
     33             m_point = point;
     34             m_type = type;
     35             m_label = label;
     36         }
     37         #endregion
     38 
     39         #region 公共方法
     40 
     41         public void EnableDrag()
     42         {
     43             this.m_w.InvokeScript("OpenMakerDraging");
     44         }
     45 
     46         public void DisableDrag()
     47         {
     48             this.m_w.InvokeScript("CloseMakerDraging");
     49         }
     50         /// <summary>
     51         /// 向地图添加一个标注点
     52         /// </summary>
     53         /// <param name="point">地理坐标</param>
     54         public void AddMaker(WebBrowser w)
     55         {
     56             this.m_w = w;
     57             switch (m_type)
     58             {
     59                 case MakerType.Normal:
     60                     AddNormalMaker(w, m_point);//添加普通标注点
     61                     break;
     62                 case MakerType.Animation:
     63                     AddAnimationMaker(w, m_point);//添加动画标注点
     64                     break;
     65                 case MakerType.WithInfoWinfow:
     66                     AddWindowMaker(w, m_point);//添加含信息窗口标注点
     67                     break;
     68                 case MakerType.WithLabel:
     69                     AddLabelMaker(w, m_point);//添加含信息窗口标注点
     70                     break;
     71             }
     72         }
     73 
     74         #endregion
     75 
     76         #region 私有方法
     77         /// <summary>
     78         /// 用于处理不同类型标注点的方法
     79         /// </summary>
     80         /// <param name="w">webBrowser</param>
     81         /// <param name="point">坐标</param>
     82         private void AddLabelMaker(WebBrowser w, MapBase.Point point)
     83         {
     84             string labelContent = m_label.Content;
     85             w.InvokeScript("AddLabelMaker", new Object[] { point.Lng, point.Lat, labelContent });
     86         }
     87 
     88         private void AddWindowMaker(WebBrowser w, MapBase.Point point)
     89         {
     90             string labelContent = m_label.Content;
     91             w.InvokeScript("AddWindowMaker", new Object[] { point.Lng, point.Lat, labelContent });
     92         }
     93 
     94         private void AddAnimationMaker(WebBrowser w, MapBase.Point point)
     95         {
     96             w.InvokeScript("AddAnimationMaker", new Object[] { point.Lng, point.Lat });
     97         }
     98 
     99         private void AddNormalMaker(WebBrowser w, MapBase.Point point)
    100         {
    101             w.InvokeScript("AddNormalMaker", new Object[] { point.Lng, point.Lat });
    102         }
    103         #endregion
    104 
    105         #region 属性
    106         public Point Point
    107         {
    108             get { return m_point; }
    109             set { m_point = value; }
    110         }
    111         #endregion
    112     }
    View Code

      枚举MarkerType,覆盖物类型

    1     public enum MakerType
    2     {
    3         Normal,//普通标注点
    4         Animation,//动画标注点
    5         WithInfoWinfow,//含有信息窗口的标注点
    6         WithLabel//含有标签的标注点
    7     }
    View Code

      类UserMarker,人覆盖物(自定义覆盖物)

      1     /// <summary>
      2     /// 地图覆盖物UserMarker类
      3     /// </summary>
      4     public class UserMarker
      5     {
      6         #region
      7 
      8         /// <summary>
      9         /// 坐标
     10         /// </summary>
     11         private MapBase.Point _point;
     12 
     13         /// <summary>
     14         /// 标注点类型
     15         /// </summary>
     16         //private MakerType _type;
     17 
     18         /// <summary>
     19         /// 信息窗口内容
     20         /// </summary>
     21         private string UserInfo;
     22 
     23         /// <summary>
     24         /// 姓名
     25         /// </summary>
     26         private string UserName;
     27 
     28         /// <summary>
     29         /// 
     30         /// </summary>
     31         private WebBrowser _w;
     32 
     33         #endregion
     34 
     35         /// <summary>
     36         /// 构造函数- 选择人员
     37         /// </summary>
     38         /// <param name="_userName"></param>
     39         public UserMarker(string _userName)
     40         {
     41             UserName = _userName;
     42         }
     43 
     44         /// <summary>
     45         /// 构造函数- 人员
     46         /// </summary>
     47         /// <param name="point"></param>
     48         /// <param name="_userName"></param>
     49         public UserMarker(Point point,string _userName,string _info)
     50         {
     51             _point = point;
     52             UserName = _userName;
     53             UserInfo = _info;
     54         }
     55 
     56         #region Methods
     57 
     58         public void EnableDrag()
     59         {
     60             this._w.InvokeScript("OpenMakerDraging");
     61         }
     62 
     63         public void DisableDrag()
     64         {
     65             this._w.InvokeScript("CloseMakerDraging");
     66         }
     67 
     68         /// <summary>
     69         /// 添加人
     70         /// </summary>
     71         /// <param name="w"></param>
     72         public void AddUserMarker(WebBrowser w)
     73         {
     74             this._w = w;
     75             w.InvokeScript("AddUserMarker", new Object[] { _point.Lng, _point.Lat, UserName, UserInfo });
     76         }
     77 
     78         /// <summary>
     79         /// 选择外访员
     80         /// </summary>
     81         /// <param name="w"></param>
     82         public void SelectedUserMarker(WebBrowser w)
     83         {
     84             this._w = w;
     85             w.InvokeScript("SelectedUserMarker", new Object[] { UserName });
     86         }
     87 
     88         public event PropertyChangedEventHandler PropertyChanged;
     89 
     90         protected void OnPropertyChanged(PropertyChangedEventArgs name)
     91         {
     92             if (PropertyChanged != null)
     93             {
     94                 PropertyChanged(this, name);
     95             }
     96         }
     97 
     98         #endregion
     99 
    100         #region 属性
    101 
    102         /// <summary>
    103         /// 坐标
    104         /// </summary>
    105         public BaiduMapControl.MapBase.Point Point
    106         {
    107             get { return _point; }
    108             set { _point = value; }
    109         }
    110 
    111         private System.Windows.UIElement shape;
    112         public System.Windows.UIElement Shape
    113         {
    114             get
    115             {
    116                 return shape;
    117             }
    118             set
    119             {
    120                 if (shape != value)
    121                 {
    122                     shape = value;
    123                     OnPropertyChanged(Shape_PropertyChangedEventArgs);
    124                 }
    125             }
    126         }
    127 
    128         static readonly PropertyChangedEventArgs Shape_PropertyChangedEventArgs = new PropertyChangedEventArgs("Shape");
    129 
    130         #endregion
    131     }
    View Code

    MapService地图服务

      类DrivingRoute,行驶路线

     1     /// <summary>
     2     /// 行驶路线
     3     /// </summary>
     4     public class DrivingRoute
     5     {
     6         #region 字段
     7         private string m_start;
     8         private string m_end;
     9         #endregion
    10 
    11         #region 构造函数
    12 
    13         /// <summary>
    14         /// 定义行驶路线
    15         /// </summary>
    16         /// <param name="start"></param>
    17         /// <param name="end"></param>
    18         public DrivingRoute(string start, string end)
    19         {
    20             this.m_start = start;
    21             this.m_end = end;
    22         }
    23 
    24         #endregion
    25 
    26         #region 公共函数
    27 
    28         /// <summary>
    29         /// 得到行驶路线
    30         /// </summary>
    31         /// <param name="w"></param>
    32         public void GetDrivingRoute(WebBrowser w)
    33         {
    34             w.InvokeScript("GetDrivingRoute", new Object[] { m_start, m_end });
    35         }
    36         #endregion
    37     }
    View Code

      类Geocoder,地理编码

      1     /// <summary>
      2     /// 地理编码
      3     /// </summary>
      4     public class Geocoder
      5     {
      6         #region 字段
      7 
      8         /// <summary>
      9         /// 坐标
     10         /// </summary>
     11         private MapBase.Point m_point;
     12 
     13         /// <summary>
     14         /// 地理位置
     15         /// </summary>
     16         private string m_address;
     17 
     18         /// <summary>
     19         /// 地址位置数组
     20         /// </summary>
     21         private string[] AddressArray;
     22 
     23         /// <summary>
     24         /// 地址位置列表
     25         /// </summary>
     26         private List<string> AddressList = new List<string>();
     27 
     28         /// <summary>
     29         /// 城市名称
     30         /// </summary>
     31         private string CityOrProvinceName;
     32 
     33         #endregion
     34 
     35         #region 构造函数
     36 
     37         /// <summary>
     38         /// 构造函数 - 地理位置
     39         /// </summary>
     40         /// <param name="point"></param>
     41         /// <param name="addressList"></param>
     42         public Geocoder(string lng,string lat,List<string> addressList,string _cityOrProvinceName)
     43         {
     44             CityOrProvinceName = _cityOrProvinceName;
     45             this.m_point = new MapBase.Point(lng,lat);
     46             AddressArray = new string[addressList.Count];
     47             AddressList.Clear();
     48             for (int i = 0; i < addressList.Count; i++)
     49             {
     50                 AddressArray[i] = addressList[i];
     51                 AddressList.Add(addressList[i]);
     52             }
     53         }
     54 
     55         /// <summary>
     56         /// 构造函数 - 坐标解析地理位置
     57         /// </summary>
     58         /// <param name="point"></param>
     59         public Geocoder(MapBase.Point point)
     60         {
     61             this.m_point = point;
     62         }
     63 
     64         /// <summary>
     65         /// 构造函数 - 地理位置解析坐标
     66         /// </summary>
     67         /// <param name="address"></param>
     68         public Geocoder(string address)
     69         {
     70             this.m_address = address;
     71         }
     72 
     73         #endregion
     74 
     75         #region 公共方法
     76 
     77         /// <summary>
     78         /// 连接到人
     79         /// </summary>
     80         /// <param name="w"></param>
     81         public void GetAddresses(WebBrowser w)
     82         {
     83             w.InvokeScript("GetAddresses", new Object[] { m_point.Lng, m_point.Lat, AddressArray});
     84         }
     85 
     86         /// <summary>
     87         /// 
     88         /// </summary>
     89         /// <param name="w"></param>
     90         public void GetAddressList(WebBrowser w)
     91         {
     92             try
     93             {
     94                 foreach (var addr in AddressList)
     95                 {
     96                     w.InvokeScript("GetSingleAddress", new Object[] { m_point.Lng, m_point.Lat, addr, CityOrProvinceName });
     97                 }
     98             }
     99             catch (Exception)
    100             {
    101             }
    102         }
    103         //public string DecodePoint(WebBrowser w)
    104         //{
    105         //    w.InvokeScript("GetByPoint", new Object[] { m_point.Lng, m_point.Lat });
    106         //    return w.GetElementById("geo").InnerText;
    107         //}
    108 
    109         //public MapBase.Point DecodeAddress(WebBrowser w)
    110         //{
    111         //    w.InvokeScript("GetByAddress", new Object[] { m_address });
    112         //    return new MapBase.Point(w.Document.GetElementById("lng").InnerText, w.Document.GetElementById("lat").InnerText);
    113         //}
    114 
    115         #endregion
    116     }
    View Code

      类LocalSearch,地图搜索

     1     /// <summary>
     2     /// 地图搜索类,用于提供地图搜索支持
     3     /// </summary>
     4     public class LocalSearch
     5     {
     6         public void LocalSeach(string keywords, WebBrowser w)
     7         {
     8             w.InvokeScript("LocalSearch", new Object[] { keywords });
     9         }
    10 
    11         public void SearchNearby(string keywords, string center, WebBrowser w)
    12         {
    13             w.InvokeScript("SearchNearby", new Object[] { keywords, center });
    14         }
    15 
    16         public void SearchInBounds(string keywords, WebBrowser w)
    17         {
    18             w.InvokeScript("SearchInBounds", new Object[] { keywords });
    19         }
    20     }
    View Code

      类TransitRoute,中继路线

     1     public class TransitRoute
     2     {
     3         #region 字段
     4         private string m_start;
     5         private string m_end;
     6         #endregion
     7 
     8         #region 构造函数
     9         public TransitRoute(string start, string end)
    10         {
    11             this.m_start = start;
    12             this.m_end = end;
    13         }
    14 
    15         #endregion
    16 
    17         #region 公共函数
    18         public void GetTransitRoute(WebBrowser w)
    19         {
    20             w.InvokeScript("TransitRoute", new Object[] { m_start, m_end });
    21         }
    22         #endregion
    23     }
    View Code

      类UserRoute,外出路线

     1     /// <summary>
     2     /// 外出路线
     3     /// </summary>
     4     public class UserRoute
     5     {
     6         #region 字段
     7 
     8         /// <summary>
     9         /// 坐标字符串
    10         /// </summary>
    11         public string allArray;
    12 
    13         #endregion
    14 
    15         /// <summary>
    16         /// 构造函数 - 外出路径
    17         /// </summary>
    18         /// <param name="_pointList">坐标列表</param>
    19         public UserRoute(List<Point> _pointList)
    20         {
    21             int i = 0;
    22             foreach (var _point in _pointList)
    23             {
    24                 allArray = allArray + _point.Lng + ",";
    25                 if (i != (_pointList.Count) - 1)
    26                 {
    27                     allArray = allArray + _point.Lat + ",";
    28                 }
    29                 else
    30                 {
    31                     allArray = allArray + _point.Lat;
    32                 }
    33                 i++;
    34             }
    35         }
    36 
    37         /// <summary>
    38         /// 构造函数 - 清空路径
    39         /// </summary>
    40         public UserRoute()
    41         {
    42  
    43         }
    44 
    45         /// <summary>
    46         /// 添加路线
    47         /// </summary>
    48         /// <param name="w"></param>
    49         public void AddUserRoute(WebBrowser w)
    50         {
    51             try
    52             {
    53                 w.InvokeScript("AddUserRoute", new Object[] { allArray });
    54             }
    55             catch (Exception)
    56             {
    57             }
    58         }
    59 
    60         /// <summary>
    61         /// 清空所有路线
    62         /// </summary>
    63         /// <param name="w"></param>
    64         public void ClearAllUserRoute(WebBrowser w)
    65         {
    66             w.InvokeScript("ClearAllUserRoute");
    67         }
    68     }
    View Code

      类WalkingRoute,步行路线

     1     /// <summary>
     2     /// 步行路线
     3     /// </summary>
     4     public class WalkingRoute
     5     {
     6         #region 字段
     7         private string m_start;
     8         private string m_end;
     9         #endregion
    10 
    11         #region 构造函数
    12         public WalkingRoute(string start, string end)
    13         {
    14             this.m_start = start;
    15             this.m_end = end;
    16         }
    17 
    18         #endregion
    19 
    20         #region 公共函数
    21         public void GetWalkingRoute(WebBrowser w)
    22         {
    23             w.InvokeScript("Walking", new Object[] { m_start, m_end });
    24         }
    25         #endregion
    26     }
    View Code

    MapTools地图工具

      枚举MapToolsState,工具状态

    1     /// <summary>
    2     /// 工具状态
    3     /// </summary>
    4     public enum MapToolsState
    5     {
    6         Open,//开启
    7         Close//关闭
    8     }
    View Code

      类DisanceTool,距离工具

     1     /// <summary>
     2     /// 距离工具
     3     /// </summary>
     4     public class DistanceTool
     5     {
     6         //构造函数
     7         private WebBrowser w;
     8 
     9         public DistanceTool(MapToolsState state)
    10         {
    11             this.state = state;//为属性赋值
    12         }
    13         public void AddDistanceTool(WebBrowser w)
    14         {
    15 
    16             this.w = w;
    17             switch (state)
    18             {
    19                 case MapToolsState.Open:
    20                     this.Open();
    21                     break;
    22                 case MapToolsState.Close:
    23                     this.Close();
    24                     break;
    25             }
    26         }
    27 
    28         public void Open()
    29         {
    30             if (this.state == MapToolsState.Close)
    31             {
    32                 w.InvokeScript("DistanceToolOpen");
    33             }
    34         }
    35 
    36         public void Close()
    37         {
    38             if (this.state == MapToolsState.Open)
    39             {
    40                 w.InvokeScript("DistanceToolClose");
    41             }
    42         }
    43         //属性
    44         MapToolsState state { get; set; }
    45     }
    View Code

      类DragAndZoomTool,拖拽工具

     1     /// <summary>
     2     /// 拖拽改变地图大小工具
     3     /// </summary>
     4     public class DragAndZoomTool
     5     {
     6         //构造函数
     7         private WebBrowser w;
     8         public DragAndZoomTool(MapToolsState state)
     9         {
    10             this.state = state;//为属性赋值
    11         }
    12 
    13         //公共方法
    14         public void AddDragAndZoomTool(WebBrowser w)
    15         {
    16             this.w = w;
    17             switch (this.state)
    18             {
    19                 case MapToolsState.Open:
    20                     this.Open();
    21                     break;
    22                 case MapToolsState.Close:
    23                     this.Close();
    24                     break;
    25             }
    26         }
    27 
    28         public void Open()
    29         {
    30             w.InvokeScript("DragAndZoomOpen");
    31         }
    32 
    33         public void Close()
    34         {
    35             w.InvokeScript("DragAndZoomClose");
    36         }
    37         //属性
    38         MapToolsState state { get; set; }
    39     }
    View Code

      类DrawingManager,绘图工具

     1     /// <summary>
     2     /// 绘图工具
     3     /// </summary>
     4     public class DrawingManager
     5     {
     6 
     7         public WebBrowser w;
     8 
     9         #region 构造函数
    10         public DrawingManager(MapToolsState state)
    11         {
    12             this.state = state;
    13         }
    14         //方法
    15         public void AddDrawingManager(WebBrowser w)
    16         {
    17             this.w = w;
    18             switch (this.state)
    19             {
    20                 case MapToolsState.Open:
    21                     this.Open();
    22                     break;
    23                 case MapToolsState.Close:
    24                     this.Close();
    25                     break;
    26             }
    27         }
    28         #endregion
    29 
    30         #region 公共方法
    31         public void Open()
    32         {
    33             w.InvokeScript("DrawingManagerOpen");
    34         }
    35 
    36         public void Close()
    37         {
    38             w.InvokeScript("DrawingManagerClose");
    39         }
    40         #endregion
    41 
    42         #region 属性
    43         MapToolsState state { get; set; }
    44         #endregion
    45 
    46     }
    View Code

    Waiting

      这篇先到这,下篇在具体写功能的实现,因为下一篇内容也比较多,所以就分开写~

  • 相关阅读:
    关于 TIdHttp
    DCEF3 相关资料
    WPF RichTextBox 控件常用方法和属性
    Delphi Data Type to C# Data Type
    获取 CPU 序列号
    Visual Studio 调用 Delphi DLL 会退出的解决方案
    IDHttp的基本用法(转)
    TChromeTabs 优化改进
    java与json转换
    js charAt()方法
  • 原文地址:https://www.cnblogs.com/shadow-fei/p/4680139.html
Copyright © 2011-2022 走看看