/// <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);
            }
        }
Ejemplo n.º 2
0
 /// <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);
     }
 }
Ejemplo n.º 3
0
        /// <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 + "&region=" + 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 + "&region=" + 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);
            }
        }
Ejemplo n.º 4
0
 /// <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);
     }
 }
Ejemplo n.º 5
0
 /// <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);
     }
 }
Ejemplo n.º 6
0
        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 + "&region=" + region + "&output=json&ak=" + _ak;
                    string json = DownloadString(url);
                    return(JsonConvert.DeserializeObject(json) as JObject);
                }
                else  //SN校验
                {
                    string url = _suggestion_url + "?query=" + query + "&region=" + 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);
            }
        }
Ejemplo n.º 7
0
 /// <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 + "&region=" + 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 + "&region=" + 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);
     }
 }
Ejemplo n.º 8
0
 /// <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);
     }
 }
Ejemplo n.º 9
0
        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();
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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));
        }
Ejemplo n.º 13
0
 /// <summary>
 /// 构建查询字符串
 /// </summary>
 /// <typeparam name="TResponse"></typeparam>
 /// <param name="request"></param>
 /// <returns></returns>
 public override string BuildQueryString <TResponse>(IRequest <TResponse> request)
 {
     return(AKSNCaculater.BuildQueryStringWithAkAndSn(request, Ak, Sk));
 }