博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【百度地图API】如何进行地址解析与反地址解析?——模糊地址能搜索到精确地理信息!...
阅读量:6319 次
发布时间:2019-06-22

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

原文:

摘要:

  什么是地址解析?

  什么是反地址解析?

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

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

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

一、地址解析

地址解析,是用户输入一个详细到门牌号的地址。例如“北京市中关村南大街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));
}
},
"
北京市
"
);

运行该示例,请点击: 

二、反地址解析

反地址解析,就是传进去一个经纬度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);
});
});

运行该示例,请点击:

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

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

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

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

完整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

转载地址:http://jvjaa.baihongyu.com/

你可能感兴趣的文章
Swoole 1.8.12 发布,Bug修复版本
查看>>
《ANSYS 14.0超级学习手册》一第1章 绪 论
查看>>
《简明电路分析》——1.6节简单电路分析实例
查看>>
《淘宝店铺经营管理一册通》一一1.3 页面中的图片应用
查看>>
996月入三万,他却要放弃
查看>>
《电子基础与维修工具核心教程》——1.2 电的作用
查看>>
《DNS与BIND(第5版)》——7.6 保持一切平稳运行
查看>>
优秀程序员写代码的七个优秀习惯
查看>>
《云计算:概念、技术与架构》一2.3 案例研究3:Innovartus
查看>>
再遭质疑:Chrome、Safari自动填信息可能会泄密
查看>>
《Arduino实战》——第1章 你好Arduino
查看>>
《AutoCAD 2016中文版室内装潢设计从入门到精通》——第2章 AutoCAD 2016入门2.1 操作界面...
查看>>
cactiEZ中文版10.1安装(附下载地址)
查看>>
中国云计算厂商营收排名:阿里云完虐微软
查看>>
《Hadoop集群与安全》一2.1 在Hadoop集群中配置操作系统
查看>>
awk 系列:awk 怎么读取标准输入(STDIN)
查看>>
Linux有问必答-如何创建和挂载XFS文件系统
查看>>
《当用户体验设计遇上敏捷》一3.5 小结
查看>>
《iOS 9应用开发入门经典(第7版)》——第2章,第2.4节小结
查看>>
学会放下包袱,热爱单例
查看>>