C#代码将GPRS坐标/谷歌坐标转换为百度坐标
2014-10-13 12:45
411 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; namespace gpsTobaidu { public class BaiduTo { public BaiduTo() { change(); } //转换前的GPS坐标 double x = 116.397428; double y = 39.90923; //google 坐标转百度链接 //http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=116.32715863448607&y=39.990912172420714&callback=BMap.Convertor.cbk_3694 //gps坐标的type=0 //google坐标的type=2 //baidu坐标的type=4 void change() { String path = "http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=" + x + "+&y=" + y + "&callback=BMap.Convertor.cbk_7594"; string res = SendDataByGET(path); if (res.IndexOf("(") > 0 && res.IndexOf(")") > 0) { int sint=res.IndexOf("(") + 1; int eint=res.IndexOf(")"); int ls = res.Length; String str = res.Substring(sint,eint-sint); int errint=res.IndexOf("error") + 7; int enderr=res.IndexOf("error") + 8; String err = res.Substring(errint, 1); if ("0".Equals(err)) { int sx = str.IndexOf(",\"x\":\"")+6; int sy = str.IndexOf("\",\"y\":\""); int endy = str.IndexOf("\"}"); int sl = str.Length; string xp = str.Substring(sx,sy-sx); string yp = str.Substring(sy + 7, endy - sy - 7); byte[] outputb = Convert.FromBase64String(xp); string XStr = Encoding.Default.GetString(outputb); outputb = Convert.FromBase64String(yp); string YStr = Encoding.Default.GetString(outputb); //JSONObject js = JSONObject.fromObject(str); ////编码转换 //String x1 = new String(Base64.decode(js.getString("x"))); //String y1 = new String(Base64.decode(js.getString("y"))); } } } /// 通过GET方式发送数据 /// url /// GET数据 /// GET容器 public string SendDataByGET(string Url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } } }
代码二:
public MapPoint ConvertPoint(string lng,string lat) { string url = string.Format(@"http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x={0}&y={1}", lng,lat); string webdata = util.GetData(url); MapPoint point = JsonHelper.JsonDeserialize<MapPoint>(webdata); if (point.error == "0") { point.x = Base64ToString(point.x); point.y = Base64ToString(point.y); } return point; } public string Base64ToString(string base64Str) { byte[] byteArr = Convert.FromBase64String(base64Str); return Encoding.UTF8.GetString(byteArr); }
/// <summary> /// JSON反序列化 /// </summary> public static T JsonDeserialize<T>(string jsonString) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); T obj = (T)ser.ReadObject(ms); return obj; } } //{"error":0,"x":"MTEyLjU1OTAwMzM2MTU2","y":"MzcuODQwODM4NzU1Mzg2"} [DataContract] public class MapPoint { [DataMember] public string error; [DataMember] public string x; [DataMember] public string y; }
原文链接:http://bbs.lbsyun.baidu.com/viewthread.php?tid=1410&extra=page%3D1
相关文章推荐
- JS代码将GPRS坐标/谷歌坐标转换为百度坐标
- 关于GPS定位经纬度到谷歌(google)坐标以及百度(百度)坐标的转换c#源码
- 地球坐标-火星坐标-百度坐标及之间的转换算法 C#
- 获取全国市以及地理坐标,各大坐标系北斗,百度,WGS-84坐标系的转换,有图,有代码
- 百度与谷歌地图坐标转换
- c#封装百度web服务geocoding api 、百度坐标转换示例
- 获取全国市以及地理坐标,各大坐标系北斗,百度,WGS-84坐标系的转换,有图,有代码
- 地球坐标转换(度分秒转度),火星坐标,百度坐标转换 c++,js ,c# 算法通用
- 地球坐标-火星坐标-百度坐标及之间的转换算法 C#
- 谷歌坐标(GPS坐标)与百度坐标的转换
- [JS] 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换(JS版代码)
- 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换(JS版代码)
- 百度坐标,火星坐标和WGS84之间转换Java代码
- 墨卡托坐标于百度经纬度坐标相互转换c#实现
- C#封装百度Web服务API处理包含(Geocoding API,坐标转换API)
- C#抓取百度和谷歌的搜索结果(标题和链接) 代码整理
- 【转】百度坐标坐标系之间的转换(JS版代码)
- 利用创建型工厂方法模式编写小写数字金额转换为人民币大写C#代码。
- 【转】VB.net C# 代码转换工具
- Beginning C# Objects从概念到代码——1.10 隐式类型转换和显式类型转换