百度api:根据经纬度获取地理位置信息
调用百度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"; /// <summary>
/// 根据经纬度获取地理位置
/// </summary>
/// <param name="lat">纬度</param>
/// <param name="lng">经度</param>
/// <returns>具体的地埋位置</returns>
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返回的结果:
<?xml version="1.0" encoding="utf-8" ?>
- <GeocoderSearchResponse>
<status>0</status>
- <result>
- <location>
<lat>39.983424051248</lat>
<lng>116.32298703399</lng>
</location>
<formatted_address>北京市海淀区中关村大街27号1101-08室</formatted_address>
<business>中关村,人民大学,苏州街</business>
- <addressComponent>
<streetNumber />
<street>中关村大街</street>
<district>海淀区</district>
<city>北京市</city>
<province>北京市</province>
</addressComponent>
<cityCode>131</cityCode>
- <pois>
- <poi>
<addr>中关村西区南侧(中关村科技园区内)</addr>
<distance>0.050000</distance>
<name>中关村大厦</name>
<poiType>办公大厦,商务大厦</poiType>
<tel>(010)82856666</tel>
<zip>100000</zip>
- <point>
<x>116.32298658484</x>
<y>39.983423843929</y>
</point>
</poi>
- <poi>
<addr>中关村大街27号</addr>
<distance>0.050000</distance>
<name>眉州东坡酒楼中关村店</name>
<poiType>中餐馆,餐饮</poiType>
<tel>(010)82856948</tel>
<zip />
- <point>
<x>116.32298658484</x>
<y>39.983423843929</y>
</point>
</poi>
- <poi>
<addr>中关村大街27号</addr>
<distance>0.050000</distance>
<name>中国人民财产保险中关村营业部</name>
<poiType>中国人民财产保险,保险公司,金融</poiType>
<tel>(010)82856779</tel>
<zip>100000</zip>
- <point>
<x>116.32298658484</x>
<y>39.983423843929</y>
</point>
</poi>
- <poi>
<addr>北京市海淀区</addr>
<distance>94.432081</distance>
<name>光合作用书房</name>
<poiType>图书音像,购物</poiType>
<tel />
<zip />
- <point>
<x>116.32239334388</x>
<y>39.983890240676</y>
</point>
</poi>
- <poi>
<addr>中关村大街27号</addr>
<distance>42.195731</distance>
<name>建行中关村支行</name>
<poiType>中国建设银行,银行,金融</poiType>
<tel />
<zip>100000</zip>
- <point>
<x>116.32292037972</x>
<y>39.983711118168</y>
</point>
</poi>
- <poi>
<addr>北京市海淀区</addr>
<distance>62.342644</distance>
<name>海淀医院-激光整形美容部</name>
<poiType>美容美发,生活服务</poiType>
<tel />
<zip />
- <point>
<x>116.32317954086</x>
<y>39.98301950182</y>
</point>
</poi>
- <poi>
<addr>中关村大街19号新中关购物中心1楼</addr>
<distance>112.983688</distance>
<name>星巴克新中关店</name>
<poiType>星巴克,咖啡厅,休闲餐饮,餐饮</poiType>
<tel>(010)82486056</tel>
<zip />
- <point>
<x>116.32218215226</x>
<y>39.983899777278</y>
</point>
</poi>
</pois>
</result>
</GeocoderSearchResponse>
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 | 配额错误 |
百度api:根据经纬度获取地理位置信息的更多相关文章
- C#百度api 根据经纬度获取地址
public string GetAddress(string lat, string lng) { try { string res = ""; string url = @&q ...
- C#使用百度API通过IP获取地理位置和坐标
百度接口相关说明:http://developer.baidu.com/map/ip-location-api.htm 返回是json格式,首先构建相关反系列化类: #region AddressFo ...
- Android 获取地理位置信息 封装好了 直接用
前言:花了一个早上研究了以下android获取经纬度,然后网上的参考资料都是杂七杂八,基本上都是过去几年的,现在我用 android6.0参照别人的结果发生好多错误,我的内心几乎是崩溃的.后来,不断百 ...
- html5获取地理位置信息API
html5获取地理位置信息API 在HTML5中,可以看下如何使用Geolocation API来获得用户的地理位置信息,如果该浏览器支持的话,且设备具有定位功能,就能够直接使用这组API来获取当前位 ...
- Html5 Geolocation获取地理位置信息
Html5中提供了地理位置信息的API,通过浏览器来获取用户当前位置.基于此特性可以开发基于位置的服务应用.在获取地理位置信息前,首先浏览器都会向用户询问是否愿意共享其位置信息,待用户同意后才能使用. ...
- AngularJS进阶(二十)HTML5实现获取地理位置信息并定位功能
HTML5实现获取地理位置信息并定位功能 注:请点击此处进行充电! 前言 这篇文章主要介绍了HTML5实现获取地理位置信息并定位功能,本文讲解了原生HTML5.百度地图.谷歌地图等三种获取理位置信息并 ...
- html5实现获取地理位置信息并定位
这里主要讲h5实现获取地理位置信息并定位功能,本文讲解了原生h5,百度地图,谷歌地图等三种获取地理信息并定位的方法,需要的朋友可以参考下: h5提供了地理位置功能(Geolocation API),能 ...
- Html5 Geolocation获取地理位置信息(转)
Html5中提供了地理位置信息的API,通过浏览器来获取用户当前位置.基于此特性可以开发基于位置的服务应用.在获取地理位置信息前,首先浏览器都会向用户询问是否愿意共享其位置信息,待用户同意后才能使用. ...
- JS根据经纬度获取地址信息
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
随机推荐
- Mybatis中的jdbcType的作用
使用MyBatis框架做更新操作时,在该字段需要更新的内容为空时,就会出现1111错误,也就是无效的列类型,这个时候你就要使用jdbcType.至于什么时候要使用到javaType我还没遇到过,而且我 ...
- 使用Hexo和Github Pages快速搭建个人博客
在编程路上,每天都在网上查看别人的博客,大牛的文章写得通俗易懂,同时博客网站也非常华丽.作为出入编程的一枚小白也想拥有这样一个自己的网站.那就立马去买一个域名了,在网上找教程来搭建. 搭建的过程还算比 ...
- linux命令更改服务器时间
1. linux更改服务器时间: 权限:root用户才有权限更改服务器时间 使用date命令即可设置系统时间. 2. 查看系统时间 date 3. 设置当前系统时间为2015年5月8日19点48分0秒 ...
- ios 九宫格
#define kViewW 40 //宽度 #define kViewH 61 //高度 #define kColCount 4 //共几列 CGFloat marginX = (self.view ...
- Android ListView左滑删除、左滑自定义功能
最近项目需要ListView左滑删除功能,搜集了很多资料发现了一个某一前辈写的库能很简单的实现这个功能,而且有源码,直接拿来使用了. 库名字叫做SwipeMenuListView,下面给大家演示一下使 ...
- 配置hive使用mysql存储metadata metadatastore
hive默认使用derby数据库保存元数据,derby数据库比较小众,并且一次只能打开一个会话,一般修改为mysql数据库. 1.修改conf/hive-site.xml配置项: <pr ...
- Angularjs 表格插件的使用
对于相关的table组件可以使用:UI Grid (ng-grid),ng-table,smart table,Angular-Datatables,tablelite,kendo-ui中的grid. ...
- Eigen学习之简单线性方程与矩阵分解
Eigen提供了解线性方程的计算方法,包括LU分解法,QR分解法,SVD(奇异值分解).特征值分解等.对于一般形式如下的线性系统: 解决上述方程的方式一般是将矩阵A进行分解,当然最基本的方法是高斯消元 ...
- 5.FileWriter 和 BufferWriter
FileWriter 和 BufferWriter的使用场景 IO这块,各种Writer,Reader,让人眼晕 而在网上基本找不到在什么时候用哪个类,并且网上的IO demo 很多用法都是错的 在 ...
- Jmeter入门--关联
名称解释 关联是请求与请求之间存在数据依赖关系,需要从上一个请求获取下一个请求需要回传回去的数据. 具体方法 Jmeter关联有两种方法:Xpath.正则表达式 方法一:Xpath主要用于响应是格式是 ...