百度地圖API已經作了很久了,本身一我的作完的這個項目,一直想記錄的,拖延症爆發,一直到如今,並且前面MVC還沒寫完,主要是卡在受權,底層和頁面功能都明白了,可是就是受權,整個項目的開始沒搞懂,也夠鬱悶的,也就把MVC放放,一邊看,一邊寫吧,先把API寫完~html
項目是用的WPF,地圖控件用的到WPF的UserControl,結構以下web
其中BaiduMap_WPF是項目,BaiduMapControl是百度地圖控件,EntityAgent是定義的實體,SimpleMvvmToolkit-WPF是小型Mvvm,爲何沒有EF?是由於數據獲取是經過WebService的方法獲取的座標信息,所以省略了一些東西,不過這原本就是主要寫百度地圖API,有沒有都無所謂。api
地圖控件的文件比較多,大致分爲:數組
其中,MapBase文件夾定義的是各類控件基礎類,MapLayer文件夾定義的是各類覆蓋物基礎類,MapService文件夾定義的是各類地圖服務的基礎類,最後的MapTools文件夾定義的是地圖上各類控件基礎類,BaiduMap.xaml是百度地圖WPF的用戶控件UserControl。ide
類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 }
枚舉MapControlType,控件的類型工具
1 /// <summary> 2 /// 控件的類型 3 /// </summary> 4 public enum MapControlType 5 { 6 NavigationControl,//平移縮放控件 7 OverviewMapControl,//縮略圖控件 8 ScaleControl,//比例尺控件 9 MapTypeControl,//地圖類型控件 10 CopyrightControl //版權控件 11 }
類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 }
類Cirle,圓,地圖上添加一個圓形覆蓋物this
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 }
類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 }
類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 }
類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 }
枚舉MarkerType,覆蓋物類型
1 public enum MakerType 2 { 3 Normal,//普通標註點 4 Animation,//動畫標註點 5 WithInfoWinfow,//含有信息窗口的標註點 6 WithLabel//含有標籤的標註點 7 }
類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 }
類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 }
類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 }
類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 }
類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 }
類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 }
類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 }
枚舉MapToolsState,工具狀態
1 /// <summary> 2 /// 工具狀態 3 /// </summary> 4 public enum MapToolsState 5 { 6 Open,//開啓 7 Close//關閉 8 }
類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 }
類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 }
類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 }
這篇先到這,下篇在具體寫功能的實現,由於下一篇內容也比較多,因此就分開寫~