运用了Geocoding API,它包括地址解析和逆地址解析功能。

地址解析是指,由详细到街道的结构化地址得到百度经纬度信息,且支持名胜古迹、标志性建筑名称直接解析返回百度经纬度。例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”,“百度大厦”地址解析的结果是“lng:116.30815,lat:40.056885”

逆地址解析是指,由百度经纬度信息得到结构化地址信息。例如:“lat:31.325152,lng:120.558957”逆地址解析的结果是“江苏省苏州市虎丘区塔园路318号”。注意:

1.因为Geocoding和反Geocoding使用的门址数据以及算法都不是一样的,所以会出现不能一一对应的现象。

2.解析过程中可能会出现一对坐标值对应多个地址门牌信息,本接口将返回距离坐标点最近的一个地址门牌信息。

使用方法:

第一步,申请key,去百度开发者平台http://lbsyun.baidu.com/apiconsole/key申请AK(用户密钥),申请key需要注册百度账号;

申请时请求校验方式选择IP白名单检验,若设置为0.0.0.0/0 则代表不做任何限制。

第二步,拼写发送http请求的url,注意需使用第一步申请的key;

第三步,接收http请求返回的数据(支持json和xml格式)。

百度地图API服务说明见其主页:

http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

地址解析:根据地址获取坐标

http://api.map.baidu.com/geocoder?address=地址&output=输出格式类型&key=用户密钥&city=城市名

逆地址解析:根据坐标获取地址

http://api.map.baidu.com/geocoder?location=纬度,经度&output=输出格式类型&key=用户密钥

C#定义一个类Geo

  1. using System.Collections.Generic;
  2. using System.Text;
  3. using System.Net;
  4. using System.IO;
  5. public class Geo
  6. {
  7. ///
  8. /// latitude
  9. ///
  10. private string _latitude = "";
  11.  
  12. ///
  13. /// longtitude
  14. ///
  15. private string _longtitude = "";
  16.  
  17. ///
  18. /// default constructor
  19. ///
  20. public Geo()
  21. {
  22.  
  23. }
  24.  
  25. ///
  26. ///类Geo提供经纬度
  27. ///
  28. public Geo(string latitude, string longtitude)
  29. {
  30. _latitude = latitude;
  31. _longtitude = longtitude;
  32. }
  33.  
  34. ///
  35. /// 根据地名获取经纬度
  36. ///
  37. public Geo(string location)
  38. {
  39. string ak = ".........";//输入在百度开发者平台免费申请的密钥
  40. string url = string.Format("http://api.map.baidu.com/geocoder/v2/?address={0}&output=json&ak={1}&callback=showLocation", location, ak);
  41. try
  42. {
  43. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  44. using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
  45. {
  46. using (StreamReader sr = new StreamReader(response.GetResponseStream()))
  47. {
  48. string[] tmpArray = sr.ReadToEnd().Split(new char[] { ',', ':' });
  49. _latitude = tmpArray[];//纬度
  50. _longtitude = tmpArray[];//经度
  51. }
  52. }
  53. }
  54. catch (System.Net.Sockets.SocketException ex)
  55. {
  56. Console.WriteLine("网络中断");
  57. }
  58. catch (Exception ex)
  59. {
  60. //throw ex;
  61. Console.WriteLine("异常类型:{0}", ex.GetType());
  62. Console.WriteLine("异常信息:{0}", ex.Message);
  63. Console.WriteLine("异常来源:{0}", ex.Source);
  64. Console.WriteLine("异常堆栈:{0}", ex.StackTrace);
  65. Console.WriteLine("内部异常:{0}", ex.InnerException);
  66. }
  67. }
  68.  
  69. ///
  70. /// get latitude
  71. ///
  72. public string Latitude
  73. {
  74. get { return _latitude; }
  75. set { _latitude = value; }
  76. }
  77.  
  78. ///
  79. /// get longtitude
  80. ///
  81. public string Longtitude
  82. {
  83. get { return _longtitude; }
  84. set { _longtitude = value; }
  85. }
  86. }

类Geo定义

调用方法:

Geo position = new Geo(地名);
MessageBox.Show("经度:" + position.Longtitude + ";纬度:" + position.Latitude);//显示对应经纬度

以上是地址解析方法,逆地址解析方法大同小异。

PS:

百度地图API每个开发者账号每天调用“地理编码”API 服务的总次数(即配额)是有限的,未认证是6000次,认证成功是30万次。

若想不受限,可以用天地图API(完全免费,只需输入地址且无需ak),它的地址解析url如下:

http://api.tianditu.gov.cn/geocoder?ds={"keyWord":"地址"}

(使用时需注意url内的“{}”和双引号都需要加转义字符,双引号前加" \ ",大括号须连续写两个,如"{"须写成"{{",转义后为一个大括号)

天地图API服务说明见其主页:

http://lbs.tianditu.gov.cn/server/guide.html

百度地图API根据地名获取经纬度的更多相关文章

  1. 百度地图API地点搜索-获取经纬度

    分享一下地图上的地点搜索和鼠标点击获取地点经纬度,这些都是地图比较基本和实用的代码,其中还包括了根据用户IP进行地图的显示.改变地图上的鼠标样式.启用滚轮缩放等,算是半入门吧,其他的一些可以自己参考百 ...

  2. Python使用百度地图API根据地名获取相应经纬度

    今天有个需求,要根据地名获取经纬度坐标值. 于是我第一想法:打开百度地图,手动输入地名,获取.显然当地名较少时,可实施.然而,当地名较多时,此方法显然工作量很大. 于是,第二想法:代码获取,请求百度地 ...

  3. 百度地图api根据地址获取经纬度

    package com.haiyisoft.cAssistant;import java.io.BufferedReader;import java.io.IOException; import ja ...

  4. 【百度地图API】自行获取区域经纬度的工具

    原文:[百度地图API]自行获取区域经纬度的工具 摘要:上一章教大家如何建立自己的行政区域地图.这次为大家提供一个,可视化选择区域,并且能自动生成经纬度代码的工具.工具的源代码完全公开,并且做了详尽的 ...

  5. 【百度地图API】如何获取行政区域的边界?

    原文:[百度地图API]如何获取行政区域的边界? 摘要:以前教过大家如何自行获取行政区域,或者自定义获取一个区域的边界值.今天来教大家直接调用百度地图API1.3(目前最新版本)来获取行政区域的边界值 ...

  6. 简单几行代码使用百度地图API接口分页获取信息

    首发于: 万能助手扩展开发:使用百度地图API接口分页获取信息_电脑计算机编程入门教程自学 http://jianma123.com/viewthread.aardio?threadid=426 使用 ...

  7. 百度地图api根据定位获取附近商家(只获取屏幕内)

    根据中心点坐标计算出屏幕2个点(一个最低经纬度,一个最高经纬度),判断这两个点中间的所有坐标的商家..考虑屏幕分辨率之类 移动地图中心点变动,如何异步刷新,判断商家是否已经存在..等... 百度地图a ...

  8. 百度地图API 根据地址查询经纬度

    html页面.引用上API: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> ...

  9. 百度地图API应用之获取用户的具体位置

    功能的大概:用户通过点击地图上面的位置,在地图上面进行描点,然后再把获取的到的地理位置保存到地图上面的地址栏目中. 主要是百度地图API的使用 .代码如下: var map = new BMap.Ma ...

随机推荐

  1. Java Web 深入分析(3) CDN

    CDN (Content Delivery NetWork) 内容分发网络,它是构筑在现有互联网基础上的一种先进的流量分配网络.区别于镜像,相当于是 CDN = 镜像(mirror) + 缓存(Cac ...

  2. 国际化(i18n)学习

    一 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationalization)又称 ...

  3. 美化linux客户端zsh和oh-my-zsh

    linuxbashzshoh-my-zsh 一.安装zsh 二.安装oh-my-zsh 一.安装zsh 安装 zsh yum -y install zsh 替换默认shell chsh -s /bin ...

  4. nuxt中全局引入element-ui

    介绍 对于一个前端小白来说,使用一套已有的框架作为基础,可以达到事半功倍的效果,在这里我们选择Element.Element,一套为开发者.设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库( ...

  5. 【Distributed】网站跨域解决方案

    一.概述 1.1 什么是网站跨域 1.2 网站跨域报错案例 二.五种网站跨域解决方案 三.使用JSONP解决网站跨域[1] 3.1 前端代码 3.2 后端代码 四.使用设置响应头允许跨域[2] 4.1 ...

  6. Oracle 数据 查询 一对多 取最新一条非 0 数据

    主键id     待查字段     日期 1            6             2019/5/1 1            0             2019/5/2 需求: 找出 ...

  7. JNI线程、Linux常用命令、权限、防火墙配置

    JNI_OnLoad: 调用System.loadLibrary()函数时, 内部就会去查找so中的 JNI_OnLoad 函数,如果存在此函数则调用. JNI_OnLoad会: 告诉 VM 此 na ...

  8. linux 确定端口使用情况

    lsof -i:3533 确定端口已经在使用

  9. Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

    一.正则表达式 正则表达式为我们提供了抓取数据的快捷方式.虽然该正则表达式更容易适应未来变化,但又存在难以构造.可读性差的问题.当在爬京东网的时候,正则表达式如下图所示: 此外 ,我们都知道,网页时常 ...

  10. hexo主题next 7.X版本配置美化

    我们主要对next主题进行了如下配置操作.效果可以前往https://www.ipyker.com 查看. 也可以前往https://github.com/ipyker/hexo-next-theme ...