【百度地图API】当地址解析失败时,如何调用search方法查找地址

简介: 原文:【百度地图API】当地址解析失败时,如何调用search方法查找地址有个朋友问我,当地址解析失败时,应该如何处理呢?比如,他想搜索“南宁市青秀区”。 ----------------------------------------------------------------------------- 首先,我们需要弄明白,地址解析的原理: 使用Geocoder进行地址解析,比如“北京市海淀区上地10街”,当系统匹配到这个地址时,getPoint就会返回一个坐标点。
原文: 【百度地图API】当地址解析失败时,如何调用search方法查找地址

有个朋友问我,当地址解析失败时,应该如何处理呢?比如,他想搜索“南宁市青秀区”。

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

首先,我们需要弄明白,地址解析的原理

使用Geocoder进行地址解析,比如“北京市海淀区上地10街”,当系统匹配到这个地址时,getPoint就会返回一个坐标点。
这里需要用到回调函数。
var myGeo = new BMap.Geocoder(); // 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint( " 北京市海淀区上地10街 " , function (point){
if (point) {
map.centerAndZoom(point,
16 );
map.addOverlay(
new BMap.Marker(point));
}},
" 北京市 " ); 

当系统无法匹配“北京市海淀区上地10街”的时候,会返回“北京市海淀区”的几何中心点。
如果还是无法匹配,会返回“北京市”的几何中心点。

如果你只是想返回“北京市”的坐标,或者说想要模糊查询,建议不要使用地址解析。
而是使用LocalSearch类的search方法。例子详见:
http:
// www.cnblogs.com/milkmap/archive/2010/12/22/1914106.html

当地址解析失败时,你可以调用localsearch函数。这个方法被称之为模糊查询

在以下的例子里,为了方便快捷,我取了第一个查询结果。

这样,当地址解析“南宁市青秀区”失败时,会自动search这个地址,并打点在地图上。

img_65b3071d4832c7c2e2685a6cc9f3d8d2.jpg

完整源代码:

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< title > 地址解析失败时搜索 </ title >
< meta name ="Generator" content ="EditPlus" >
< meta name ="Author" content ="" >
< meta name ="Keywords" content ="" >
< meta name ="Description" content ="" >
< script type ="text/javascript" src ="http://api.map.baidu.com/api?v=1.2" ></ script >
</ head >

< body >
< div id ="divMap" style ="width:400px;height:400px;border:solid 1px gray" ></ div >
< script type ="text/javascript" >
var map = new BMap.Map( " divMap " );
map.centerAndZoom(
new BMap.Point( 108.532769 , 22.825487 ), 12 ); // 这里是定义到了南宁市
var gc = new BMap.Geocoder();
gc.getPoint(
" 南宁市青秀区 " , function (pt){
if (pt){
map.addOverlay(
new BMap.Marker(pt)); // 如果地址解析成功,则添加红色marker
} else {
var ls = new BMap.LocalSearch( " 南宁市 " );
ls.search(
" 南宁市青秀区 " );
ls.setSearchCompleteCallback(
function (rs){
if (ls.getStatus() == BMAP_STATUS_SUCCESS){
var poi = rs.getPoi( 0 ); // 取第1个查询结果
if (poi){
var pt2 = poi.point;
map.addOverlay(
new BMap.Marker(pt2)); // 如果查询到,则添加红色marker
}
}
else {
alert(
" fail " );
}
});
}
},
" 南宁市 " );
</ script >
</ body >
</ html >
目录
相关文章
|
1天前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的深度解析
【5月更文挑战第12天】本文将深入探讨Java 8中的两个重要新特性:Lambda表达式和Stream API。我们将从基本概念入手,逐步深入到实际应用场景,帮助读者更好地理解和掌握这两个新特性,提高Java编程效率。
11 2
|
4天前
|
SQL Java 数据库连接
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
9 0
|
5天前
|
供应链 搜索推荐 API
API在电子商务中的应用与优势:深入解析
API是电子商务成功的关键,它们不仅促进了技术创新,还提高了用户体验和运营效率。随着技术的不断进步,API将继续在电子商务领域发挥更加重要的作用。电子商务平台通过利用API,可以更加灵活地适应市场变化,提供更加丰富和个性化的购物体验,最终实现业务的增长和扩展。
|
14天前
|
JSON 安全 API
【专栏】四种REST API身份验证方法:基本认证、OAuth、JSON Web Token(JWT)和API密钥
【4月更文挑战第28天】本文探讨了四种REST API身份验证方法:基本认证、OAuth、JSON Web Token(JWT)和API密钥。基本认证简单但不安全;OAuth适用于授权第三方应用;JWT提供安全的身份验证信息传递;API密钥适合内部使用。选择方法时需平衡安全性、用户体验和开发复杂性。
|
18天前
|
Java API PHP
邮件发送API的方法和步骤
邮件发送API能便捷地自动化发送邮件,提高效率。步骤包括:1. 选择如aoksend、Mailgun或Amazon SES等适合的API;2. 注册并获取API密钥;3. 设置发件人、收件人、主题和内容等参数;4. 根据API文档用Python等语言编写调用代码;5. 调用API发送邮件并处理结果;6. 根据返回信息判断发送是否成功。适用于大量邮件发送场景。
|
18天前
|
API 开发者
邮件API接口使用的方法和步骤
AOKSEND指南:了解和使用邮件API接口,包括选择适合的接口(如AOKSEND、Mailgun、SMTP),获取访问权限,配置发件人、收件人及邮件内容,调用接口发送邮件,并处理返回结果,以高效集成邮件功能。
|
19天前
|
SQL 关系型数据库 API
从API获取数据并将其插入到PostgreSQL数据库:步骤解析
使用Python处理从API获取的数据并插入到PostgreSQL数据库:安装`psycopg2`,建立数据库连接,确保DataFrame与表结构匹配,然后使用`to_sql`方法将数据插入到已存在的表中。注意数据准备、权限设置、性能优化和安全处理。
|
19天前
|
API
邮箱API发送邮件调试的方法和步骤
AokSend指南:调试邮箱API发送邮件涉及确认调试目的、检查参数设置、接口调用、异常处理、日志记录及结果验证。确保参数正确,关注接口返回,记录日志以分析问题,处理异常情况,最终验证邮件发送成功与内容准确性。AokSend提供高效发信服务,支持SMTP/API接口,适用于大量验证码发送。
|
19天前
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。
|
19天前
|
API PHP 数据安全/隐私保护
IMAP邮箱API接收收取邮件的方法和步骤
IMAP邮箱API是用于自动接收和管理邮件的接口,允许程序无须手动登录即可操作邮件。要使用它,需先配置邮箱允许API访问,选择如Python的imaplib或PHP的imap扩展等IMAP库,然后连接到邮箱服务器,接收和处理邮件。处理完毕后断开连接。AokSend提供高效发信服务,支持SMTP/API接口。使用IMAP API能提升邮件管理效率。