首页 > 学院 > 开发设计 > 正文

C#封装百度Web服务API处理包含(Geocoding API,坐标转换API)

2019-11-17 03:14:52
字体:
来源:转载
供稿:网友

C#封装百度Web服务API处理包含(Geocoding API,坐标转换API)

1、创建基础参数类

 1   public static class BaiduConstParams 2     { 3         public const string PlaceApIv2Search = "http://api.map.baidu.com/place/v2/search"; 4         public const string PlaceApIv2Detail = "http://api.map.baidu.com/place/v2/detail"; 5         public const string PlaceApIv2Eventsearch = "http://api.map.baidu.com/place/v2/eventsearch"; 6         public const string PlaceApIv2Eventdetail = "http://api.map.baidu.com/place/v2/eventdetail"; 7         public const string GeocodingApIv2 = "http://api.map.baidu.com/geocoder/v2/"; 8         public const string GeocodingApIv2Reverse = "http://api.map.baidu.com/geocoder/v2/"; 9         public const string TranslateApi = "http://openapi.baidu.com/public/2.0/bmt/translate";10         public const string GeoconvApi = "http://api.map.baidu.com/geoconv/v1/";11     }12 13     public static class BaiduErrorMessages14     {15         public const string NotKey = "密钥不存在";16         public const string LackParam = "缺少必要请求参数";17     }
View Code

2、定义API错误信息与产品信息

 1 public enum BaiduLbsType 2     { 3         PlaceApIv2Search, 4         PlaceApIv2Detail, 5         PlaceApIv2Eventsearch, 6         PlaceApIv2Eventdetail, 7         GeocodingApIv2, 8         GeocodingApIv2Reverse, 9         Translate,10         Geoconv11     }12 13     public enum Status14     {15         /// <summary>16         /// 正常    17         /// </summary>18         Ok = 0,19         /// <summary>20         /// 请求参数非法    21         /// </summary>22         ParameterInvalid = 2,23         /// <summary>24         /// 权限校验失败25         /// </summary>26         VerifyFailure = 3,27         /// <summary>28         /// 配额校验失败29         /// </summary>30         QuotaFailure = 4,31         /// <summary>32         /// 不存在或者非法    33         /// </summary>34         AkFailure = 5,35         /// <summary>36         /// Transform 内部错误37         /// </summary>38         InternalError = 1,39         /// <summary>40         /// from非法41         /// </summary>42         FromIllegal = 21,43         /// <summary>44         /// to非法45         /// </summary>46         ToIllegal = 22,47         /// <summary>48         /// coords非法49         /// </summary>50         CoordsIllegal = 24,51         /// <summary>52         /// coords个数非法,超过限制53         /// </summary>        54         CoordsCountIllegal = 2555 56     }
View Code

3、定义API结果返回实体映射类

 public class BaiduGeocodingResults    {        /// <summary>        /// 返回结果状态值, 成功返回0,其他值请查看附录。        /// </summary>        [JsonPRoperty(PropertyName = "status")]        public Status Status;        /// <summary>        /// 返回结果状态值, 成功返回0,其他值请查看附录。        /// </summary>        [JsonProperty(PropertyName = "result")]        public BaiduGeocodingResult Result;    }    public class BaiduGeocodingResult    {        /// <summary>        /// 经纬度坐标        /// </summary>        [JsonProperty(PropertyName = "location")]        public BaiduGeocodingLoaction Location;        /// <summary>        /// 位置的附加信息,是否精确查找。1为精确查找,0为不精确。        /// </summary>        [JsonProperty(PropertyName = "precise")]        public int Precise;        /// <summary>        /// 可信度        /// </summary>        [JsonProperty(PropertyName = "confidence")]        public int Confidence;        /// <summary>        /// 地址类型        /// </summary>        [JsonProperty(PropertyName = "level")]        public string Level;        /// <summary>        /// 结构化地址信息        /// </summary>        [JsonProperty(PropertyName = "formatted_address")]        public string FormattedAddress;        /// <summary>        /// 所在商圈信息,如 "人民大学,中关村,苏州街"        /// </summary>        [JsonProperty(PropertyName = "business")]        public string Business;        /// <summary>        /// 具体地址        /// </summary>        [JsonProperty(PropertyName = "addressComponent")]        public BaiduGeocodingAddress AddressComponent;    }    public class BaiduGeocodingLoaction    {        /// <summary>        /// 纬度值        /// </summary>        [JsonProperty(PropertyName = "lat")]        public decimal Lat;        /// <summary>        /// 经度值        /// </summary>        [JsonProperty(PropertyName = "lng")]        public decimal Lng;    }    public class BaiduGeocodingAddress    {        /// <summary>        /// 城市名        /// </summary>        [JsonProperty(PropertyName = "city")]        public string City;        /// <summary>        /// 区县名        /// </summary>        [JsonProperty(PropertyName = "district")]        public string District;        /// <summary>        /// 省名        /// </summary>        [JsonProperty(PropertyName = "province")]        public string Province;        /// <summary>        /// 街道名        /// </summary>        [JsonProperty(PropertyName = "street")]        public string Street;        /// <summary>        /// 街道门牌号        /// </summary>        [JsonProperty(PropertyName = "street_number")]        public string StreetNumber;    }
View Code

4、创建API通用处理类

  1 public class BaiduLbs  2     {  3         private readonly string _key;  4   5         public static string CurrentRequest = "";  6   7         public BaiduLbs(string key)  8         {  9             _key = key; 10         } 11  12         /// <summary> 13         /// 请求 14         /// </summary> 15         /// <param name="param"></param> 16         /// <param name="baiduLbsType"></param> 17         /// <param name="encoding"></param> 18         /// <param name="action"></param> 19         public void Request(string param, BaiduLbsType baiduLbsType, Encoding encoding, Action<string> action) 20         { 21             WebClient webClient = new WebClient { Encoding = encoding }; 22             string url = ""; 23             switch (baiduLbsType) 24             { 25                 case BaiduLbsType.PlaceApIv2Search: 26                     url = string.Format(BaiduConstParams.PlaceApIv2Search + "?{0}", param); 27                     break; 28                 case BaiduLbsType.PlaceApIv2Detail: 29                     url = string.Format(BaiduConstParams.PlaceApIv2Detail + "?{0}", param); 30
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表