예제 #1
0
        /// <summary>
        /// 批量计算多个起点到一个终点的距离
        /// </summary>
        /// <param name="orignLocation">起点,多个起点用|分隔</param>
        /// <param name="destination">终点</param>
        /// <param name="key"></param>
        /// <param name="sk"></param>
        /// <param name="type">计算的方式,0:直线距离;1:驾车距离</param>
        /// <returns></returns>
        public static List <string> CalcGroupDistance(string orignLocation, string destination, string key, string sk, string type = "0")
        {
            string url = "https://restapi.amap.com/v3/distance";

            string sign = AKSNCaculater.GDCaculateSN(sk, new Dictionary <string, string>()
            {
                { "destination", destination },
                { "key", key },
                { "origins", orignLocation },
                { "type", type }
            });

            string jsonResult = HTTPClientHelper.GetResponseByGet(new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("destination", destination),
                new KeyValuePair <string, string>("key", key),
                new KeyValuePair <string, string>("origins", orignLocation),
                new KeyValuePair <string, string>("type", type),
                new KeyValuePair <string, string>("sig", sign),
            }, url);

            //解析JSON
            JObject jo   = (JObject)JsonConvert.DeserializeObject(jsonResult);
            var     code = jo.Properties().Where(p => p.Name == "status").Select(p => p.Value.ToString()).FirstOrDefault();

            //请求成功
            if (code == "1")
            {
                var    distances = new List <string>();
                string value     = jo.Properties().Where(p => p.Name == "results").Select(p => p.Value.ToString()).FirstOrDefault();
                JArray ja        = (JArray)JsonConvert.DeserializeObject(value);
                foreach (var item in ja)
                {
                    distances.Add(item["distance"].ToString());
                }
                return(distances);
            }
            else //请求失败
            {
                return(null);
            }
        }
예제 #2
0
        /// <summary>
        /// 根据地名查询经纬度
        /// </summary>
        /// <param name="url">api地址</param>
        /// <param name="key">申请的appKey</param>
        /// <param name="sk">私钥</param>
        /// <param name="address">查询的地址(省市区+具体地址)</param>
        /// <param name="city">查询的城市</param>
        /// <returns></returns>
        public static string QueryGDLocationByName(string url, string key, string sk, string address, string city)
        {
            //计算数字签名
            string sign = AKSNCaculater.GDCaculateSN(sk, new Dictionary <string, string>()
            {
                { "address", address },
                { "city", city },
                { "key", key }
            });

            //发送请求
            string jsonResult = HTTPClientHelper.GetResponseByGet(new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("address", address),
                new KeyValuePair <string, string>("city", city),
                new KeyValuePair <string, string>("key", key),
                new KeyValuePair <string, string>("sig", sign),
            }, url);

            //解析JSON
            JObject jo = (JObject)JsonConvert.DeserializeObject(jsonResult);
            //JObject jo = JObject.Parse(jsonResult);
            var code = jo.Properties().Where(p => p.Name == "status").Select(p => p.Value.ToString()).FirstOrDefault();

            //jo.Remove();
            //请求成功
            if (code == "1")
            {
                string value = jo.Properties().Where(p => p.Name == "geocodes").Select(p => p.Value.ToString()).FirstOrDefault();
                JArray ja    = (JArray)JsonConvert.DeserializeObject(value);
                return(ja[0]["location"].ToString());
            }
            else //请求失败
            {
                return(null);
            }
        }