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 }
根据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 }