C# 调用腾讯地图WebService API获取距离(一对多)

官方文档地址:https://lbs.qq.com/webservice_v1/guide-distance.html

代码:

 1 /// <summary>
 2         /// 获取距离最近的点的经纬度
 3         /// </summary>
 4         /// <param name="from">起点坐标以英文逗号分隔,纬度在前,经度在后(纬度,经度;例:39.071510,117.190091)</param>
 5         /// <param name="to">终点坐标单个坐标以英文逗号分隔,坐标之间以英文分号分隔(例:39.071510,117.190091;40.007632,116.389160;39.840177,116.463318)</param>
 6         /// <param name="mode">计算方式:driving(驾车)、walking(步行)默认:walking</param>
 7         /// <returns></returns>
 8         public static Distance GetShortestDistance(string from = "", string to = "", string mode = "walking")
 9         {
10             if (string.IsNullOrEmpty(from) || string.IsNullOrEmpty(to))
11             {
12                 return null;
13             }
14             var url = new Config().DistanceUrl;
15             var Data = new SortedDictionary<string, string>();
16             Data.Add("mode", mode);
17             Data.Add("from", from);
18             Data.Add("to", to);
19             Data.Add("key", new Config().TencentMapKey);//new Config().TencentMapKey,腾讯开发平台分配的key
20             var dataStr = string.Empty;
21             foreach (var item in Data)
22             {
23                 dataStr += item.Key + "=" + item.Value + "&";
24             }
25             var postData = dataStr.Substring(0, dataStr.Length - 1);
26             var signData = postData + new Config().TencentMapSN;//new Config().TencentMapSN,腾讯开放平台分配的验签值,,
27             var sign = DoEncrypt.MD5("/ws/distance/v1/?" + signData);//md5加密
28             postData += "&sig=" + sign;
29             var result = DoWebRequest.SendRequest_Get(url, postData);
30             var postResult = DoWebRequest.SendRequest_Get(url, postData);
31             if (!string.IsNullOrEmpty(postResult))
32             {
33                 return postResult.ToObjectFromJson<Distance>();
34             }
35             return null;
36         }
View Code

根据API返回类容定义的解析对象:

1 public class Distance
2         {
3             public int status { get; set; }//返回状态码
4             public string message { get; set; }//状态码说明
5             public object result { get; set; }//返回内容
6         }
View Code

 

posted @ 2019-01-10 10:55  BoboIng  阅读(1215)  评论(1编辑  收藏  举报