C#高德/百度地图API通过地理位置获取经纬度

        public static (double? lng,double? lat,string country,string province,string city,string area,string addr) GetXY(string address, System.Net.Http.HttpClient client)
        {
            string gdkey = "";//高德key
            string bdkey = "";//百度key
            //高德API会把地址拆分成省市区和坐标返回,百度只返回坐标
            string url = String.Format("https://restapi.amap.com/v3/geocode/geo?address={0}&output=json&key={1}", address, gdkey);
            //结果
            string result = client.GetStringAsync(url).Result;
            var locationResult = (JObject)JsonConvert.DeserializeObject(result);
            if (locationResult["status"].ToString() == "1" && locationResult["geocodes"].Count() > 0)
            {
                var coordinate = locationResult["geocodes"][0]["location"].ToString().Split(",");
                var country = locationResult["geocodes"][0]["country"].ToString().Replace("[]", "");
                var province = locationResult["geocodes"][0]["province"].ToString().Replace("[]", "");
                var city = locationResult["geocodes"][0]["city"].ToString().Replace("[]", "");
                var district = locationResult["geocodes"][0]["district"].ToString().Replace("[]", "");
                var street = locationResult["geocodes"][0]["street"].ToString().Replace("[]","");
                var number = locationResult["geocodes"][0]["number"].ToString().Replace("[]", "");
                double? lng = null, lat = null;
                if (coordinate.Length == 2)
                {
                    string lngStr = coordinate[0];
                    string latStr = coordinate[1];
                    lng = double.Parse(lngStr);
                    lat = double.Parse(latStr);
                    //高德坐标转百度
                    var baiduXY = Gcj02ToBd09(lat.Value, lng.Value);
                    lng = baiduXY[1];
                    lat = baiduXY[0];
                }
                return (lng, lat, country, province, city, district, street + number);
            }
            else
            {
            	//百度API
                url = String.Format("http://api.map.baidu.com/geocoding/v3/?address={0}&output=json&ak={1}", address, bdkey);
                result = client.GetStringAsync(url).Result;
                locationResult = (JObject)JsonConvert.DeserializeObject(result);
                if (locationResult["status"].ToString() == "0")
                {
                    string lngStr = locationResult["result"]["location"]["lng"].ToString();
                    string latStr = locationResult["result"]["location"]["lat"].ToString();
                    double lng = double.Parse(lngStr);
                    double lat = double.Parse(latStr);
                    return (lng, lat, "", "", "", "", "");
                }
                else
                {
                    return (null, null, "", "", "", "", "");
                }
            }
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值