博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百度api:根据经纬度获取地理位置信息
阅读量:6201 次
发布时间:2019-06-21

本文共 7464 字,大约阅读时间需要 24 分钟。

调用百度api,根据经度和纬度获取地理位置信息,返回Json。

C#代码:

using Newtonsoft.Json;using Newtonsoft.Json.Linq;using System;using System.Net.Http;    public class LocationService    {        //百度api        private static string url = @"http://api.map.baidu.com/geocoder/v2/?location={0}&output=json&ak=WEc8RlPXzSifaq9RHxE1WW7lRKgbid6Y";        ///         /// 根据经纬度获取地理位置        ///         /// 纬度        /// 经度        /// 
具体的地埋位置
public static string GetLocation(string lat, string lng) { HttpClient client = new HttpClient(); string location = string.Format("{0},{1}", lat, lng); string bdUrl = string.Format(url, location); string result = client.GetStringAsync(bdUrl).Result; var locationResult = (JObject)JsonConvert.DeserializeObject(result); if (locationResult == null || locationResult["result"] == null || locationResult["result"]["formatted_address"] == null) return string.Empty; var address = Convert.ToString(locationResult["result"]["formatted_address"]); if (locationResult["result"]["sematic_description"] != null) address += " " + Convert.ToString(locationResult["result"]["sematic_description"]); return address; } }

调用示例1:

LocationService.GetLocation("0","0")

返回Json:

{

{  "country": "",  "country_code": -1,  "province": "",  "city": "",  "district": "",  "adcode": "0",  "street": "",  "street_number": "",  "direction": "",  "distance": ""}}

调用示例2:

LocationService.GetLocation("36.2585", "120.27")

返回Json:

 {

{  "status": 0,  "result": {    "location": {      "lng": 120.26999999999993,      "lat": 36.25849989472075    },    "formatted_address": "山东省青岛市城阳区和融路",    "business": "上马",    "addressComponent": {      "country": "中国",      "country_code": 0,      "province": "山东省",      "city": "青岛市",      "district": "城阳区",      "adcode": "370214",      "street": "和融路",      "street_number": "",      "direction": "",      "distance": ""    },    "pois": [],    "roads": [],    "poiRegions": [],    "sematic_description": "青岛宝佳自动化设备有限公司北575米",    "cityCode": 236  }}}

 

=================================================================

以下内容转自他人博客,返回xml格式的例子

博客地址:http://www.cnblogs.com/_zjl/p/3431525.html

 

代码:

private string GetAddress(string lng, string lat)        {            try            {                string url = @"http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderReverse&location=" + lat + "," + lng + @"&output=xml&pois=1";                WebRequest request = WebRequest.Create(url);                request.Method = "POST";                XmlDocument xmlDoc = new XmlDocument();                string sendData = xmlDoc.InnerXml;                byte[] byteArray = Encoding.Default.GetBytes(sendData);                Stream dataStream = request.GetRequestStream();                dataStream.Write(byteArray, 0, byteArray.Length);                dataStream.Close();                WebResponse response = request.GetResponse();                dataStream = response.GetResponseStream();                StreamReader reader = new StreamReader(dataStream, System.Text.Encoding.GetEncoding("utf-8"));                string responseXml = reader.ReadToEnd();                XmlDocument xml = new XmlDocument();                xml.LoadXml(responseXml);                string status = xml.DocumentElement.SelectSingleNode("status").InnerText;                if (status == "0")                {                    XmlNodeList nodes = xml.DocumentElement.GetElementsByTagName("formatted_address");                    if (nodes.Count > 0)                    {                        return nodes[0].InnerText;                    }                    else                        return "未获取到位置信息,错误码3";                }                else                {                    return "未获取到位置信息,错误码1";                }            }            catch (System.Exception ex)            {                return "未获取到位置信息,错误码2";            }        }

 

url中的参数:

参数 是否必须 默认值 格式举例 含义
coordtype bd09ll bd09ll 百度经纬度坐标 坐标的类型,目前支持的坐标类型包括:bd09ll(百度经纬度坐标)、gcj02ll(国测局经纬度坐标)、wgs84ll( GPS经纬度)
location 38.76623,116.43213 lat<纬度>,lng<经度> 根据经纬度坐标获取地址
pois 0 0 是否显示指定位置周边的poi,0为不显示,1为显示。当值为1时,显示周边100米内的poi。

 

 

运行方法返回的结果:

北京市海淀区中关村大街27号1101-08室

 

从百度api返回的结果:

-
0
-
-
39.983424051248
116.32298703399
北京市海淀区中关村大街27号1101-08室
中关村,人民大学,苏州街
-
中关村大街
海淀区
北京市
北京市
131
-
-
中关村西区南侧(中关村科技园区内)
0.050000
中关村大厦
办公大厦,商务大厦
(010)82856666
100000
-
116.32298658484
39.983423843929
-
中关村大街27号
0.050000
眉州东坡酒楼中关村店
中餐馆,餐饮
(010)82856948
-
116.32298658484
39.983423843929
-
中关村大街27号
0.050000
中国人民财产保险中关村营业部
中国人民财产保险,保险公司,金融
(010)82856779
100000
-
116.32298658484
39.983423843929
-
北京市海淀区
94.432081
光合作用书房
图书音像,购物
-
116.32239334388
39.983890240676
-
中关村大街27号
42.195731
建行中关村支行
中国建设银行,银行,金融
100000
-
116.32292037972
39.983711118168
-
北京市海淀区
62.342644
海淀医院-激光整形美容部
美容美发,生活服务
-
116.32317954086
39.98301950182
-
中关村大街19号新中关购物中心1楼
112.983688
星巴克新中关店
星巴克,咖啡厅,休闲餐饮,餐饮
(010)82486056
-
116.32218215226
39.983899777278

xml说明:

名称 类型 说明
status constant 返回结果状态值, 成功返回0,其他值请查看。
location lat 纬度坐标
lng 经度坐标
formatted_address 结构化地址信息
business 所在商圈信息,如 "人民大学,中关村,苏州街"
addressComponent city 城市名
district 区县名
province 省名
street 街道名
street_number 街道门牌号
pois(周边poi数组) addr 地址信息
cp 数据来源
distance 离坐标点距离
name poi名称
poiType poi类型,如’ 办公大厦,商务大厦’
point poi坐标{x,y}
tel 电话
uid poi唯一标识
zip 邮编

附录:

返回码 定义
0 正常
1 服务器内部错误
2 请求参数非法
3 权限校验失败
4 配额校验失败
5 ak不存在或者非法
101 服务禁用
102 不通过白名单或者安全码不对
2xx 无权限
3xx 配额错误

 

 

转载于:https://www.cnblogs.com/xianhan/p/7171134.html

你可能感兴趣的文章
共享一个Ext版的Toast·就是可以自动消失的信息提示
查看>>
Linux平台Oracle多个实例启动说明
查看>>
linux 查看与复制
查看>>
二层Port-security实验
查看>>
Idea 配置svn
查看>>
集群概念介绍
查看>>
开源软件镜像站
查看>>
jpg转换pdf转换器免费下载
查看>>
Open webOS 将被根据Apache模式管理
查看>>
网络编程之send()和recv()
查看>>
Amazon AWS S3 部署静态网站 + 绑定顶级域名 + DNSPod
查看>>
曾经也是菜鸟的程序猿?看完后跟我犯过同样错的人,请会心一笑。
查看>>
Python SMTP 发送纯文本
查看>>
Hadoop中的计数器(12)
查看>>
linux下git与github简单使用
查看>>
MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法
查看>>
Django中模板架构
查看>>
嵌入式知识总汇
查看>>
CentOS系统清空删除系统日志的方法
查看>>
MVC3+EF4.1学习系列(一)-------创建EF4.1 code first的第一个实例
查看>>