百度地图API(一)

开题

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

百度地图控件

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

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

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

百度地图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

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

你可能感兴趣的:(百度地图)