/// <summary> /// 高德地图调用帮助类 /// 更多详情请参考 高德api /// </summary> public class GaodeHelper { //高德平台申请的秘钥 public static string SecretKey = "申请的秘钥"; /// <summary> /// 获取经纬度 /// </summary> /// <param name="address"></param> /// <param name="city"></param> /// <returns></returns> public static string GetGeocode(string address,string city) { string geocodeUrl = "http://restapi.amap.com/v3/geocode/geo?address={Address}&city={City}&output=json&key={SecretKey}" .Replace("{SecretKey}", SecretKey) .Replace("{Address}", address) .Replace("{City}", city); string geocode = WebClientDownloadInfoToString(geocodeUrl); geocode = GetLatitudeAndLongitude(geocode); return geocode; } /// <summary> /// 获取城市之间的距离 /// </summary> /// <param name="begin"></param> /// <param name="beginCity"></param> /// <param name="end"></param> /// <param name="endCity"></param> /// <returns></returns> public static string GetDistance(string begin,string beginCity, string end, string endCity) { string origin = GetGeocode(begin,beginCity); string destination = GetGeocode(end, endCity); string driveUri = "http://restapi.amap.com/v3/direction/driving?key={SecretKey}&origin={Origin}&destination={Destination}" .Replace("{SecretKey}", SecretKey) .Replace("{Origin}", origin) .Replace("{Destination}", destination); string result= WebClientDownloadInfo(driveUri); //var gd = Newtonsoft.Json.JsonConvert.DeserializeObject<GaodeReturn>(result); return result; } private static string WebClientDownloadInfo(string uri) { string result = string.Empty; using (WebClient wc = new WebClient()) { wc.Headers[HttpRequestHeader.ContentType] = "application/xml;charset=UTF-8"; result = wc.DownloadString(uri); } return result; } /// <summary> /// 模拟请求 /// </summary> /// <param name="uri"></param> /// <returns></returns> private static string WebClientDownloadInfoToString(string uri) { string result = string.Empty; using (WebClient wc = new WebClient()) { wc.Headers[HttpRequestHeader.ContentType] = "application/xml;charset=UTF-8"; result = wc.DownloadString(uri); } return result; } /// <summary> /// 解析返回的经纬度信息 /// </summary> /// <param name="GeocodeJsonFormat"></param> /// <returns></returns> private static string GetLatitudeAndLongitude(string GeocodeJsonFormat) { JObject o = JObject.Parse(GeocodeJsonFormat); string geocodes = (string)o["geocodes"][0]["location"]; return geocodes; } }