/// <summary> /// 根据IP获取对应位置 /// </summary> /// <param name="ip">IP地址 为空表示访问者IP</param> /// <returns></returns> public JObject LocationByIP(string ip = null) { try { if (_vm == VerificationMode.IPWhiteList) //IP 白名单校验 { string url = _ip_url + "?ip=" + (ip == null ? "" : ip) + "&coor=bd09ll&output=json&ak=" + _ak; string json = DownloadString(url); return(JsonConvert.DeserializeObject(json) as JObject); } else //SN校验 { string url = _ip_url + "?ip=" + (ip == null ? "" : ip) + "&coor=bd09ll&output=json&ak=" + _ak; IDictionary <string, string> param = new Dictionary <string, string> { { "ip", ip == null ? "" : ip }, { "coor", "bd09ll" }, { "output", "json" }, { "ak", _ak } }; string sn = AKSNCaculater.CaculateAKSN(_ak, _sk, _ip_url.Split(new string[] { ".com" }, StringSplitOptions.None)[1], param); //计算sn string json = DownloadString(url + "&sn=" + sn); return(JsonConvert.DeserializeObject(json) as JObject); } } catch { return(null); } }
/// <summary> /// 公交导航 /// </summary> /// <param name="origin">起点</param> /// <param name="destination">终点</param> /// <param name="region">所在城市</param> /// <returns></returns> public JObject DirectionByTransit(string origin, string destination, string region) { try { if (_vm == VerificationMode.IPWhiteList) //IP 白名单校验 { string url = _direction_url + "?origin=" + origin + "&destination=" + destination + "®ion=" + region + "&output=json&mode=transit&ak=" + _ak; string json = DownloadString(url); return(JsonConvert.DeserializeObject(json) as JObject); } else //SN校验 { string url = _direction_url + "?origin=" + origin + "&destination=" + destination + "®ion=" + region + "&output=json&mode=transit&ak=" + _ak; IDictionary <string, string> param = new Dictionary <string, string> { { "origin", origin }, { "destination", destination }, { "region", region }, { "output", "json" }, { "mode", "transit" }, { "ak", _ak } }; string sn = AKSNCaculater.CaculateAKSN(_ak, _sk, _direction_url.Split(new string[] { ".com" }, StringSplitOptions.None)[1], param); //计算sn string json = DownloadString(url + "&sn=" + sn); return(JsonConvert.DeserializeObject(json) as JObject); } } catch { return(null); } }
/// <summary> /// 将指定坐标转换成另一种指定坐标 /// 1:GPS设备获取的角度坐标 /// 2:GPS获取的米制坐标、sogou地图所用坐标 /// 3:google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标 /// 4:3中列表地图坐标对应的米制坐标 /// 5:百度地图采用的经纬度坐标 /// 6:百度地图采用的米制坐标 /// 7:mapbar地图坐标; /// 8:51地图坐标 /// </summary> /// <param name="source1">原坐标1(经度、X值)</param> /// <param name="source2">原坐标2(纬度、Y值)</param> /// <param name="from">原坐标类型</param> /// <param name="to">转换类型</param> /// <returns></returns> public JObject CoordinateTransform(string source1, string source2, int from, int to) { try { if (_vm == VerificationMode.IPWhiteList) //IP 白名单校验 { string url = _coordinate_url + "coords=" + source1 + "," + source2 + "&from=" + from + "&to=" + to + "&output=json&ak=" + _ak; string json = DownloadString(url); return(JsonConvert.DeserializeObject(json) as JObject); } else //SN校验 { string url = _coordinate_url + "coords=" + source1 + "," + source2 + "&from=" + from + "&to=" + to + "&output=json&ak=" + _ak; IDictionary <string, string> param = new Dictionary <string, string> { { "coords", source1 + "," + source2 }, { "from", from.ToString() }, { "to", to.ToString() }, { "output", "json" }, { "ak", _ak } }; string sn = AKSNCaculater.CaculateAKSN(_ak, _sk, _coordinate_url.Split(new string[] { ".com" }, StringSplitOptions.None)[1], param); //计算sn string json = DownloadString(url + "&sn=" + sn); return(JsonConvert.DeserializeObject(json) as JObject); } } catch { return(null); } }
/// <summary> /// 查询商业活动POI详细信息 /// </summary> /// <param name="uid"></param> /// <returns></returns> public JObject EventDetail(string uid) { try { if (_vm == VerificationMode.IPWhiteList) //IP 白名单校验 { string url = _eventdetail_url + "?uid=" + uid + "&output=json&scope=2&ak=" + _ak; string json = DownloadString(url); return(JsonConvert.DeserializeObject(json) as JObject); } else //SN校验 { string url = _eventdetail_url + "?uid=" + uid + "&output=json&scope=2&ak=" + _ak; IDictionary <string, string> param = new Dictionary <string, string> { { "uid", uid }, { "output", "json" }, { "scope", "2" }, { "ak", _ak } }; string sn = AKSNCaculater.CaculateAKSN(_ak, _sk, _eventdetail_url.Split(new string[] { ".com" }, StringSplitOptions.None)[1], param); //计算sn string json = DownloadString(url + "&sn=" + sn); return(JsonConvert.DeserializeObject(json) as JObject); } } catch { return(null); } }
/// <summary> /// 圆形区域内检索POI /// </summary> /// <param name="query">检索关键字</param> /// <param name="location">中心点纬度,经度</param> /// <param name="radius">半径,单位为m</param> /// <returns></returns> public JObject SearchInCircle(string query, string location, int radius) { try { if (_vm == VerificationMode.IPWhiteList) //IP 白名单校验 { string url = _search_url + "?query=" + query + "&location=" + location + "&radius=" + radius + "&output=json&page_size=20&scope=2&ak=" + _ak; string json = DownloadString(url); return(JsonConvert.DeserializeObject(json) as JObject); } else //SN校验 { string url = _search_url + "?query=" + query + "&location=" + location + "&radius=" + radius + "&output=json&page_size=20&scope=2&ak=" + _ak; IDictionary <string, string> param = new Dictionary <string, string> { { "query", query }, { "location", location }, { "radius", radius.ToString() }, { "output", "json" }, { "page_size", "20" }, { "scope", "2" }, { "ak", _ak } }; string sn = AKSNCaculater.CaculateAKSN(_ak, _sk, _search_url.Split(new string[] { ".com" }, StringSplitOptions.None)[1], param); //计算sn string json = DownloadString(url + "&sn=" + sn); return(JsonConvert.DeserializeObject(json) as JObject); } } catch { return(null); } }
private static string _suggestion_url = "http://api.map.baidu.com/place/v2/suggestion"; //位置建议服务 /// <summary> /// 检索相似位置 /// </summary> /// <param name="query">检索关键字</param> /// <param name="region">所在城市</param> /// <returns></returns> public JObject Suggestion(string query, string region) { try { if (_vm == VerificationMode.IPWhiteList) //IP 白名单校验 { string url = _suggestion_url + "?query=" + query + "®ion=" + region + "&output=json&ak=" + _ak; string json = DownloadString(url); return(JsonConvert.DeserializeObject(json) as JObject); } else //SN校验 { string url = _suggestion_url + "?query=" + query + "®ion=" + region + "&output=json&ak=" + _ak; IDictionary <string, string> param = new Dictionary <string, string> { { "query", query }, { "region", region }, { "output", "json" }, { "ak", _ak } }; string sn = AKSNCaculater.CaculateAKSN(_ak, _sk, _suggestion_url.Split(new string[] { ".com" }, StringSplitOptions.None)[1], param); //计算sn string json = DownloadString(url + "&sn=" + sn); return(JsonConvert.DeserializeObject(json) as JObject); } } catch { return(null); } }
/// <summary> /// 矩形区域内检索商业活动POI /// </summary> /// <param name="query">检索关键字</param> /// <param name="events">事件名称,可以是团购、打折,全部(groupon、discount、all) 目前只支持团购</param> /// <param name="region">城市名、代码</param> /// <param name="bounds">矩形区域,左下角纬度,经度,右上角纬度,经度</param> /// <returns></returns> public JObject EventSearchInBound(string query, string events, string region, string bounds) { try { if (_vm == VerificationMode.IPWhiteList) //IP 白名单校验 { string url = _eventsearch_url + "?query=" + query + "&event=" + events + "®ion=" + region + "&bounds=" + bounds + "&output=json&page_size=20&scope=2&ak=" + _ak; string json = DownloadString(url); return(JsonConvert.DeserializeObject(json) as JObject); } else //SN校验 { string url = _eventsearch_url + "?query=" + query + "&event=" + events + "®ion=" + region + "&bounds=" + bounds + "&output=json&page_size=20&scope=2&ak=" + _ak; IDictionary <string, string> param = new Dictionary <string, string> { { "query", query }, { "event", events }, { "region", region }, { "bounds", bounds }, { "output", "json" }, { "page_size", "20" }, { "scope", "2" }, { "ak", _ak } }; string sn = AKSNCaculater.CaculateAKSN(_ak, _sk, _eventsearch_url.Split(new string[] { ".com" }, StringSplitOptions.None)[1], param); //计算sn string json = DownloadString(url + "&sn=" + sn); return(JsonConvert.DeserializeObject(json) as JObject); } } catch { return(null); } }
/// <summary> /// 逆地址编码 坐标转地址 /// </summary> /// <param name="location">坐标 维度,经度</param> /// <returns></returns> public JObject DeGeocoding(string location) { try { if (_vm == VerificationMode.IPWhiteList) //IP 白名单校验 { string url = _geocoding_url + "?location=" + location + "&pois=1&output=json&ak=" + _ak; string json = DownloadString(url); return(JsonConvert.DeserializeObject(json) as JObject); } else //SN校验 { string url = _geocoding_url + "?location=" + location + "&pois=1&output=json&ak=" + _ak; IDictionary <string, string> param = new Dictionary <string, string> { { "location", location }, { "pois", "1" }, { "output", "json" }, { "ak", _ak } }; string sn = AKSNCaculater.CaculateAKSN(_ak, _sk, _geocoding_url.Split(new string[] { ".com" }, StringSplitOptions.None)[1], param); //计算sn string json = DownloadString(url + "&sn=" + sn); return(JsonConvert.DeserializeObject(json) as JObject); } } catch { return(null); } }
private static void TestAKSN() { //http://api.map.baidu.com/geocoder/v2/?address=百度大厦&output=json&ak=yourak&sn=7de5a22212ffaa9e326444c75a58f9a0 Dictionary <String, String> param = new Dictionary <string, string>(); param.Add("query", "ATM机"); param.Add("tag", "银行"); param.Add("region", "北京"); param.Add("output", "json"); param.Add("ak", Resources.MyAk); String sn = AKSNCaculater.CaculateAKSN(Resources.MyAk, Resources.MySk, Resources.BaiduMapPlaceSearch, param); Console.WriteLine(sn); Console.Read(); }
public static string DoGet <T>(string url, T obj) where T : BaseRequestDTO { Trace.TraceInformation("DoGet方法====>请求url={0},请求参数={1}", url, obj.ToString()); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); var sn = AKSNCaculater.CaculateAKSN(Resources.MyAk, Resources.MySk, url, obj); var param = obj.ToString() + "&ak=" + Resources.MyAk + "&sn=" + sn; Trace.TraceInformation("DoGet方法====>请求地址={0}", param); var result = HttpRequestUtil.GetHttpResponse(Resources.BaiduMapBaseUrl + url + "?" + param, 3000); stopwatch.Stop(); Trace.TraceInformation("DoGet方法====>耗时={0}毫秒,请求地址={1},返回结果={2}", stopwatch.ElapsedMilliseconds.ToString(), param, result); return(result); }
public void CaculateAKSNTest() { Dictionary <String, String> param = new Dictionary <string, string>(); param.Add("query", "ATM机"); param.Add("region", "北京"); param.Add("output", "json"); param.Add("coord_type", "1"); param.Add("city_limit", "False"); String sn = AKSNCaculater.CaculateAKSN(Resources.MyAk, Resources.MySk, Resources.BaiduMapPlaceSearch, (IDictionary <string, string>)param); PlaceSearchRequestDTO dTO = new PlaceSearchRequestDTO(); dTO.Query = "ATM机"; dTO.Region = "北京"; dTO.Output = "json"; var sn1 = AKSNCaculater.CaculateAKSN <PlaceSearchRequestDTO>(Resources.MyAk, Resources.MySk, Resources.BaiduMapPlaceSearch, dTO); }
private string GetSN(TrafficAround trafficAround) { Dictionary <string, string> keyValues = new Dictionary <string, string>(); foreach (PropertyInfo pro in typeof(TrafficAround).GetProperties()) { string value = pro.GetValue(trafficAround, null)?.ToString(); string name = pro.Name.ToLower(); if (string.IsNullOrEmpty(value)) { continue; } if (name == "sn") { continue; } keyValues.Add(name, value); } //keyValues.Add("ip", "39.91.109.120"); keyValues.Add("ak", BaiduMapRoad.AK); return(AKSNCaculater.CaculateAKSN(BaiduMapRoad.SK, BaiduMapRoad.Path, keyValues)); }