获取2个地址之间的距离(高德API)

 string startLonLat = SiteHelper.GetLonLat("大连"); //获取起始地经度纬度
 string endLonLat = SiteHelper.GetLonLat("沈阳"); //获取目的地经度纬度
 int distance = SiteHelper.GetDistance(startLonLat, endLonLat); //计算2个地址的距离(单位千米)

 

        /// <summary>
        /// 获取经度纬度
        /// </summary>
        /// <param name="address">地址</param>
        /// <returns></returns>
        public static string GetLonLat(string address)
        {
            #region 返回数据格式
            //{
            //    "status":"1",
            //    "info":"OK",
            //    "infocode":"10000",
            //    "count":"1",
            //    "geocodes":[
            //        {
            //            "formatted_address":"浙江省杭州市西湖区",
            //            "province":"浙江省",
            //            "citycode":"0571",
            //            "city":"杭州市",
            //            "district":"西湖区",
            //            "township":Array[0],
            //            "neighborhood":Object{...},
            //            "building":Object{...},
            //            "adcode":"330106",
            //            "street":Array[0],
            //            "number":Array[0],
            //            "location":"120.130203,30.259324",
            //            "level":"区县"
            //        }
            //    ]
            //}
 
            //{
            //    "status":"0",
            //    "info":"INVALID_USER_KEY",
            //    "infocode":"10001"
            //}
            #endregion
 
            string queryUrl = "http://restapi.amap.com/v3/geocode/geo?key=6119e85de0fa6a97be90a0af41f0613c7&address=" + address; //高德接口
            string queryResult = Utils.HttpGet(queryUrl); //请求接口数据
            string location = string.Empty; //经度纬度
            JsonData jd = JsonMapper.ToObject(queryResult);//字符串转换成json格式
            int status = Utils.ObjToInt(jd["status"], 0);//查询结果 1:成功 0:失败 
            if (status == 1) //成功
            {
                JsonData list = jd["geocodes"];
                if (list.Count > 0)
                {
                    location = Utils.ObjectToStr(list[0]["location"]); //获取经度纬度
                }
            }
            return location;
        }
 

         /// <summary>
        /// 获取2个地址的距离
        /// </summary>
        /// <param name="startLonLat">起始地经度纬度</param>
        /// <param name="endLonLat">目的地经度纬度</param>
        /// <returns></returns>
        public static int GetDistance(string startLonLat, string endLonLat)
        {
            #region 返回数据格式
            //{
            //    "status":"1",
            //    "info":"OK",
            //    "infocode":"10000",
            //    "results":[
            //        {
            //            "origin_id":"1",
            //            "dest_id":"1",
            //            "distance":"936631",
            //            "duration":"37140"
            //        }
            //    ]
            //}
            #endregion
 
            int duration = 0;  //起始地与目的地之间的距离
            string queryUrl = "http://restapi.amap.com/v3/distance?key=6119e85defa6a97be090a0af41f0613c7&origins=" + startLonLat + "&destination=" + endLonLat; //高德接口
            string queryResult = Utils.HttpGet(queryUrl); //请求接口数据
            JsonData jd = JsonMapper.ToObject(queryResult);//字符串转换成json格式
            int status = Utils.ObjToInt(jd["status"], 0);//查询结果 1:成功 0:失败 
            if (status == 1) //成功
            {
                JsonData list = jd["results"];
                if (list.Count > 0)
                {
                    duration = Convert.ToInt32(Convert.ToInt64(list[0]["distance"].ToString()) / 1000);
                }
            }
            return duration;
        }

转载于:https://my.oschina.net/tshblogs/blog/1852864

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过引入高德地图 JavaScript API,在 JavaScript 中调用高德地图 Distance 类的 getDistance 函数来计算两个地址之间的直线距离。 以下是一个简单的示例代码: ``` javascript // 引入高德地图 JavaScript API <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=YOUR_KEY"></script> // 输入两个地址 var address1 = "北京市海淀区上地南口路2号"; var address2 = "北京市海淀区北太平庄路甲16号"; // 创建一个地图实例 var map = new AMap.Map('mapContainer'); // 根据地址获取经纬度坐标 var geocoder1 = new AMap.Geocoder({ city: "北京市", // 城市,默认:“全国” radius: 1000 // 范围,默认:500 }); var geocoder2 = new AMap.Geocoder({ city: "北京市", radius: 1000 }); geocoder1.getLocation(address1, function(status, result1) { if (status === 'complete' && result1.info === 'OK') { var lnglat1 = result1.geocodes[0].location; geocoder2.getLocation(address2, function(status, result2) { if (status === 'complete' && result2.info === 'OK') { var lnglat2 = result2.geocodes[0].location; // 计算两个经纬度之间的直线距离 var distance = map.getDistance(lnglat1, lnglat2); console.log(distance); } else { console.log("获取地址2的经纬度坐标失败:" + result2.info); } }); } else { console.log("获取地址1的经纬度坐标失败:" + result1.info); } }); ``` 上述代码中,YOUR_KEY 是你在高德开放平台注册后生成的 API Key,应替换为你自己的值。其中,address1 和 address2 是两个需要计算距离地址。geocoder1 和 geocoder2 分别是负责将地址转换为经纬度坐标的 Geocoder 实例。当获取两个地址的经纬度坐标之后,就可以通过 map.getDistance 函数来计算它们之间的直线距离

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值