setpoint.html:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>行政区域工具</title> <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script> </head> <body> <div style="520px;height:340px;border:1px solid gray" id="container"></div> <p><input id="startBtn" type="button" onclick="startTool();" value="开启取点工具" /><input type="button" onclick="map.clearOverlays();document.getElementById('info').innerHTML = '';points=[];" value="清除" /></p> <div id="info"></div> <div id="lng"></div> <div id="lat"></div> </body> </html> <script type="text/javascript"> var map = new BMap.Map("container"); // 创建Map实例 map.centerAndZoom("北京", 11); // 初始化地图,设置中心点坐标和地图级别 map.addControl(new BMap.NavigationControl()); map.addControl(new BMap.ScaleControl()); var key = 1; //开关 var newpoint; //一个经纬度 var points = []; //数组,放经纬度信息 var polyline = new BMap.Polyline(); //折线覆盖物 function startTool(){ //开关函数 if(key==1){ document.getElementById("startBtn").style.background = "green"; document.getElementById("startBtn").style.color = "white"; document.getElementById("startBtn").value = "开启状态"; key=0; } else{ document.getElementById("startBtn").style.background = "red"; document.getElementById("startBtn").value = "关闭状态"; key=1; } } map.addEventListener("click",function(e){ //单击地图,形成折线覆盖物 newpoint = new BMap.Point(e.point.lng,e.point.lat); if(key==0){ // if(points[points.length].lng==points[points.length-1].lng){alert(111);} points.push(newpoint); //将新增的点放到数组中 polyline.setPath(points); //设置折线的点数组 map.addOverlay(polyline); //将折线添加到地图上 document.getElementById("info").innerHTML += "new BMap.Point(" + e.point.lng + "," + e.point.lat + "),</br>"; //输出数组里的经纬度 document.getElementById("lng").innerHTML= e.point.lng; document.getElementById("lat").innerHTML= e.point.lat; } }); map.addEventListener("dblclick",function(e){ //双击地图,形成多边形覆盖物 if(key==0){ map.disableDoubleClickZoom(); //关闭双击放大 var polygon = new BMap.Polygon(points); map.addOverlay(polygon); //将折线添加到地图上 } }); </script>
用Winform 读取百度地图的经纬度:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Security.Permissions; namespace baidudemo { [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] [System.Runtime.InteropServices.ComVisibleAttribute(true)] public partial class Form2 : Form { /// <summary> /// /// </summary> public Form2() { InitializeComponent(); } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form2_Load(object sender, EventArgs e) { string str_url = Application.StartupPath + "\baidu\setpoint.html"; Uri url = new Uri(str_url); webBrowser1.Url = url; webBrowser1.ObjectForScripting = this; } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { string tag_lng = webBrowser1.Document.GetElementById("lng").InnerText; string tag_lat = webBrowser1.Document.GetElementById("lat").InnerText; this.textBox1.Text = tag_lat; this.textBox2.Text = tag_lng; } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void webBrowser1_LocationChanged(object sender, EventArgs e) { ; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Web; using System.Web.Script.Serialization; //引用System.Web.Extensions using System.Data; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.Runtime.Serialization.Formatters;
/// <summary> /// /// </summary> public class JsonHelper { //对应JSON的singleInfo成员 public string singleInfo = string.Empty; protected string _error = string.Empty; protected bool _success = true; protected long _totalCount = 0; protected System.Collections.ArrayList arrData = new ArrayList(); protected System.Collections.ArrayList arrDataItem = new ArrayList(); public JsonHelper() { // //TODO: 在此处添加构造函数逻辑 // } //对应于JSON的success成员 public bool success { get { return _success; } set { //如设置为true则清空error if (success) _error = string.Empty; _success = value; } } //对应于JSON的error成员 public string error { get { return _error; } set { //如设置error,则自动设置success为false if (value != "") _success = false; _error = value; } } public long totlalCount { get { return _totalCount; } set { _totalCount = value; } } //重置,每次新生成一个json对象时必须执行该方法 public void Reset() { _success = true; _error = string.Empty; singleInfo = string.Empty; arrData.Clear(); arrDataItem.Clear(); } public void AddItem(string name, string value) { arrData.Add("/" + name + "/:" + "/" + value + "/"); } public void ItemOk() { arrData.Add("<BR>"); //返回总记录条数 totlalCount++; } //序列化JSON对象,得到返回的JSON代码 public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("{"); sb.Append("/totalCount/:/" + _totalCount.ToString() + "/,"); sb.Append("/success/:" + _success.ToString().ToLower() + "/,"); sb.Append("/error/:/" + _error.Replace("/", "///") + "/,"); sb.Append("/data/:/["); int index = 0; sb.Append("{"); if (arrData.Count <= 0) { sb.Append("}"); } else { foreach (string val in arrData) { index++; if (val != "<BR>") { sb.Append(val + ","); } else { sb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append("},"); if (index < arrData.Count) { sb.Append("{"); } } } sb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append("]"); } sb.Append("}"); return sb.ToString(); } public string ToSingleString() { StringBuilder sb = new StringBuilder(); sb.Append("{"); sb.Append("success:" + _success.ToString().ToLower() + ","); sb.Append("data:"); int index = 0; sb.Append("{"); if (arrData.Count <= 0) { sb.Append("}"); } else { foreach (string val in arrData) { index++; if (val != "<BR>") { sb.Append(val + ","); } else { sb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append("},"); if (index < arrData.Count) { sb.Append("{"); } } } sb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append(""); } sb.Append("}"); return sb.ToString(); } public static string ObjectToJSON(object obj) { JavaScriptSerializer jss =new JavaScriptSerializer(); try { return jss.Serialize(obj); } catch(Exception ex) { throw new Exception("JSONHelper.ObjectToJSON(): "+ ex.Message); } } public static List<Dictionary<string,object>>DataTableToList(DataTable dt) { List<Dictionary<string,object>> list=new List<Dictionary<string,object>>(); foreach(DataRow dr in dt.Rows) { Dictionary<string,object> dic =new Dictionary<string,object>(); foreach(DataColumn dc in dt.Columns) { dic.Add(dc.ColumnName, dr[dc.ColumnName]); } list.Add(dic); } return list; } /// <summary> /// /// </summary> /// <param name="ds"></param> /// <returns></returns> public static Dictionary<string,List<Dictionary<string,object>>>DataSetToDic(DataSet ds) { Dictionary<string,List<Dictionary<string,object>>> result =new Dictionary<string,List<Dictionary<string,object>>>(); foreach(DataTable dt in ds.Tables) result.Add(dt.TableName,DataTableToList(dt)); return result; } /// <summary> /// /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string DataTableToJSON(DataTable dt) { return ObjectToJSON(DataTableToList(dt)); } /// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="jsonText"></param> /// <returns></returns> public static T JSONToObject<T>(string jsonText) { JavaScriptSerializer jss =new JavaScriptSerializer(); try { return jss.Deserialize<T>(jsonText); } catch(Exception ex) { throw new Exception("JSONHelper.JSONToObject(): "+ ex.Message); } } /// <summary> /// /// </summary> /// <param name="jsonText"></param> /// <returns></returns> public static Dictionary<string,List<Dictionary<string,object>>>TablesDataFromJSON(string jsonText) { return JSONToObject<Dictionary<string,List<Dictionary<string,object>>>>(jsonText); } /// <summary> /// /// </summary> /// <param name="jsonText"></param> /// <returns></returns> public static Dictionary<string,object>DataRowFromJSON(string jsonText) { return JSONToObject<Dictionary<string,object>>(jsonText); } public static string ToJsJson(object item)//参数要装换成JSON的对象 { DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType()); using(MemoryStream ms=new MemoryStream()) { serializer.WriteObject(ms, item); StringBuilder sb = new StringBuilder(); sb.Append(Encoding.UTF8.GetString(ms.ToArray())); return sb.ToString(); } } //反序列化 //T指定要序列化的对象,jsonString是JSON字符串变量 public static T FromJsonTo<T>(string jsonString) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString))) { T jsonObject = (T)ser.ReadObject(ms); return jsonObject; } } }
/// <summary> /// 提供 Http 相关方法。 /// </summary> public class HttpUtils { /// <summary> /// 执行HTTP GET请求。 /// </summary> /// <param name="url">请求地址</param> /// <param name="parameters">请求参数</param> /// <returns>HTTP响应</returns> public static string DoGet(string url, IDictionary<string, string> parameters) { if (parameters != null && parameters.Count > 0) { if (url.Contains("?")) { url = url + "&" + BuildPostData(parameters); } else { url = url + "?" + BuildPostData(parameters); } } HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.ServicePoint.Expect100Continue = false; req.Method = "GET"; req.KeepAlive = true; req.UserAgent = "Test"; req.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; HttpWebResponse rsp = null; try { rsp = (HttpWebResponse)req.GetResponse(); } catch (WebException webEx) { if (webEx.Status == WebExceptionStatus.Timeout) { rsp = null; } } if (rsp != null) { if (rsp.CharacterSet != null) { Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet); return GetResponseAsString(rsp, encoding); } else { return string.Empty; } } else { return string.Empty; } } /// <summary> /// 把响应流转换为文本。 /// </summary> /// <param name="rsp">响应流对象</param> /// <param name="encoding">编码方式</param> /// <returns>响应文本</returns> private static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding) { StringBuilder result = new StringBuilder(); Stream stream = null; StreamReader reader = null; try { // 以字符流的方式读取HTTP响应 stream = rsp.GetResponseStream(); reader = new StreamReader(stream, encoding); // 每次读取不大于256个字符,并写入字符串 char[] buffer = new char[256]; int readBytes = 0; while ((readBytes = reader.Read(buffer, 0, buffer.Length)) > 0) { result.Append(buffer, 0, readBytes); } } catch (WebException webEx) { if (webEx.Status == WebExceptionStatus.Timeout) { result = new StringBuilder(); } } finally { // 释放资源 if (reader != null) reader.Close(); if (stream != null) stream.Close(); if (rsp != null) rsp.Close(); } return result.ToString(); } /// <summary> /// 组装普通文本请求参数。 /// </summary> /// <param name="parameters">Key-Value形式请求参数字典。</param> /// <returns>URL编码后的请求数据。</returns> private static string BuildPostData(IDictionary<string, string> parameters) { StringBuilder postData = new StringBuilder(); bool hasParam = false; IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator(); while (dem.MoveNext()) { string name = dem.Current.Key; string value = dem.Current.Value; // 忽略参数名或参数值为空的参数 if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value)) { if (hasParam) { postData.Append("&"); } postData.Append(name); postData.Append("="); postData.Append(Uri.EscapeDataString(value)); hasParam = true; } } return postData.ToString(); } /* GoBack():后退 GoForward():前进 Refresh():刷新 Stop():停止 GoHome():浏览主页 WebBrowser控件的常用属性: Document:获取当前正在浏览的文档 DocumentTitle:获取当前正在浏览的网页标题 StatusText:获取当前状态栏的文本 Url:获取当前正在浏览的网址的Uri ReadyState:获取浏览的状态 WebBrowser控件的常用事件: DocumentTitleChanged, CanGoBackChanged, CanGoForwardChanged, DocumentTitleChanged, ProgressChanged, ProgressChanged */ /// <summary> /// 根据Name获取元素 /// </summary> /// <param name="wb"></param> /// <param name="Name"></param> /// <returns></returns> public HtmlElement GetElement_Name(WebBrowser wb, string Name) { HtmlElement e = wb.Document.All[Name]; return e; } /// <summary> /// 根据Id获取元素 /// </summary> /// <param name="wb"></param> /// <param name="id"></param> /// <returns></returns> public HtmlElement GetElement_Id(WebBrowser wb, string id) { HtmlElement e = wb.Document.GetElementById(id); return e; } /// <summary> /// 根据Index获取元素 /// </summary> /// <param name="wb"></param> /// <param name="index"></param> /// <returns></returns> public HtmlElement GetElement_Index(WebBrowser wb, int index) { HtmlElement e = wb.Document.All[index]; return e; } /// <summary> /// 获取form表单名name,返回表单 /// </summary> /// <param name="wb"></param> /// <param name="form_name"></param> /// <returns></returns> public HtmlElement GetElement_Form(WebBrowser wb, string form_name) { HtmlElement e = wb.Document.Forms[form_name]; return e; } /// <summary> /// 设置元素value属性的值 /// </summary> /// <param name="e"></param> /// <param name="value"></param> public void Write_value(HtmlElement e, string value) { e.SetAttribute("value", value); } /// <summary> /// 执行元素的方法,如:click,submit(需Form表单名)等 /// </summary> /// <param name="e"></param> /// <param name="s"></param> public void Btn_click(HtmlElement e, string s) { e.InvokeMember(s); } }
工作流程图:
https://jsplumbtoolkit.com/demos/toolkit/flowchart-builder/index.html