【百度地图API】如何进行地址解析与反地址解析?——模糊地址能搜索到精确地理信息!

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 原文:【百度地图API】如何进行地址解析与反地址解析?——模糊地址能搜索到精确地理信息!摘要:   什么是地址解析?   什么是反地址解析?   如何运用地址解析,和反地址解析?   可以同时运用地址解析,和反地址解析麼?答案是,可以的。
原文: 【百度地图API】如何进行地址解析与反地址解析?——模糊地址能搜索到精确地理信息!

摘要:

  什么是地址解析?

  什么是反地址解析?

  如何运用地址解析,和反地址解析?

  可以同时运用地址解析,和反地址解析麼?答案是,可以的。详见最后一个示例与代码。

---------------------------------------------------------------------------------

一、地址解析

地址解析,是用户输入一个详细到门牌号的地址。例如“北京市中关村南大街27号中央民族大学”,那么地址解析接口,会返回一个经纬度Point。

接口定义如下:

getPoint(address:String, callback:Function, city:String)

对指定的地址进行解析。如果地址定位成功,则以地址所在的坐标点Point为参数调用回调函数。否则,回调函数的参数为nullcity为地址所在的城市名,例如“北京市”。

代码示例:

// 创建地址解析器实例
var myGeo = new BMap.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint( " 北京市海淀区上地10街 " , function (point){
if (point) {
map.centerAndZoom(point,
16 );
map.addOverlay(
new BMap.Marker(point));
}
},
" 北京市 " );

运行该示例,请点击:http://openapi.baidu.com/map/examples.html?v=1.1&7_12#7&12 

二、反地址解析

反地址解析,就是传进去一个经纬度Point,它会返回一个详细的地址。具体地址有多详细,就要看百度数据库里的数据了。

接口定义如下:

getLocation(point:Point, callback:function[, options:LocationOptions])

对指定的坐标点进行反向地址解析。如果解析成功,则回调函数的参数为GeocoderResult对象,否则回调函数的参数为null

代码示例:

var gc = new BMap.Geocoder();

map.addEventListener(
" click " , function (e){
var pt = e.point;
gc.getLocation(pt,
function (rs){
var addComp = rs.addressComponents;
alert(addComp.province
+ " , " + addComp.city + " , " + addComp.district + " , " + addComp.street + " , " + addComp.streetNumber);
});
});

运行该示例,请点击:http://openapi.baidu.com/map/examples.html?v=1.1&7_15#7&15

三、同时运用地址解析与反地址解析

在什么情况下需要同时运用这两个接口呢?

答案是,当你搜索一个模糊的地址,但却想要返回一个精确的地址结果。

例如“上海市新华路”,但是你想知道“新华路”在哪个区县的时候,你就可以同时利用这两个接口。

完整HTML代码:

< html >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=gb2312" />
< title > 地址解析+反地址解析 </ title >
< script type ="text/javascript" src ="http://api.map.baidu.com/api?v=1.2" ></ script >
</ head >
< body >
< div style ="width:520px;height:340px;border:1px solid gray" id ="container" ></ div >
< div style ="margin:10px 0;" >< input type ="text" style ="width:300px;margin-right:10px;" value ="新华路" id ="searchValue" />< input type ="button" value ="搜索" onclick ="search()" /></ div >

</ body >
</ html >
< script type ="text/javascript" >
var map = new BMap.Map( " container " );
map.centerAndZoom(
new BMap.Point( 121.461165 , 31.234095 ), 11 );
function search(){
var myAddress = document.getElementById( ' searchValue ' ).value;

var myGeo = new BMap.Geocoder();
myGeo.getPoint(myAddress,
function (point){ // 我输入的是“知春路”,第一步getPoint是地址解析。
if (point) {
map.centerAndZoom(point,
16 );
map.addOverlay(
new BMap.Marker(point));

myGeo.getLocation(point,
function (rs){ // 这里弹出“知春路”的详细地址信息,第二步getLocation是反地址解析。
var addComp = rs.addressComponents;
alert(myAddress
+ ' 的具体位置是: ' + addComp.province + " , " + addComp.city + " , " + addComp.district + " , " + addComp.street + " , " + addComp.streetNumber);
});
}
},
" 上海市 " ); // 必须设置城市

}
</ script >

地址解析+反地址解析示例说明:

1、运行以上HTML代码,会出现这样一个输入框,默认是新华路。点击搜索按钮。

img_fd71f6f004e3dbfcbfc562e9c774d49b.jpg

2、经过了地址解析,与反地址解析后,得到了新华路所在地区的详细地址!!!

img_d43470f1d114ae810d2ffe6b4dda7198.jpg

3、把得到的坐标标注出来。

img_daac42577aa55fb69732120eed2570e9.jpg

目录
相关文章
|
6天前
|
JSON API 开发工具
【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
|
7天前
|
API Python
【Azure Developer】AAD API如何获取用户“Block sign in”信息(accountEnabled)
【Azure Developer】AAD API如何获取用户“Block sign in”信息(accountEnabled)
|
8天前
|
测试技术 API
【API管理 APIM】如何查看APIM中的Request与Response详细信息,如Header,Body中的参数内容
【API管理 APIM】如何查看APIM中的Request与Response详细信息,如Header,Body中的参数内容
|
9天前
|
JSON API 数据安全/隐私保护
从零开始认识 API,让网页信息成为你的「知识库」
本文介绍了API(应用程序编程接口)的概念及其在网络通信中的重要作用,并通过生动的例子解释了API的工作原理。API作为连接不同软件组件的桥梁,使得开发者能够构建出功能丰富且灵活的应用程序。文章进一步探讨了如何捕获API,包括查看官方文档、使用浏览器的F12工具观察网络请求,以及借助抓包工具捕获移动应用的API调用。通过这些技术,用户可以获取所需的API信息并加以利用。作为实例,文章展示了如何通过抓取知乎、少数派等平台的热门文章API,整合信息到个人博客或笔记系统中,创建个性化的信息中心。这一过程不仅提高了信息获取的效率,也为个性化内容消费开辟了新的途径。
|
7天前
|
存储 API C#
【Azure API 管理】在APIM 中添加 log-to-eventhub 策略,把 Request Body 信息全部记录在Event Hub中
【Azure API 管理】在APIM 中添加 log-to-eventhub 策略,把 Request Body 信息全部记录在Event Hub中
|
7天前
|
API 网络架构
【Azure Developer】如何通过Azure REST API 获取到虚拟机(VM)所使用的公共IP地址信息
【Azure Developer】如何通过Azure REST API 获取到虚拟机(VM)所使用的公共IP地址信息
|
7天前
|
存储 API C#
【Azure 存储服务】Storage Account Blob 使用REST API如何获取磁盘大小(Content-Length), IOPS信息
【Azure 存储服务】Storage Account Blob 使用REST API如何获取磁盘大小(Content-Length), IOPS信息
|
7天前
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
|
7天前
|
JSON API 网络架构
【Azure Developer】Azure REST API: 如何通过 API查看 Recovery Services Vaults(恢复保管库)的备份策略信息? 如备份中是否含有虚拟机的Disk
【Azure Developer】Azure REST API: 如何通过 API查看 Recovery Services Vaults(恢复保管库)的备份策略信息? 如备份中是否含有虚拟机的Disk
|
7天前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)

推荐镜像

更多
下一篇
云函数