摘要:

很多用户一直无法区分地址解析geocoder智能搜索localsearch的使用场景。该文章用一个详尽的示例,充分展示了这两个类,共5种方法的使用场景。并在文章末尾贴出全部源代码。

工具如下图:

小贴士:

如果你手里有一大批从第三方获取的地址信息(并且只有地址信息),建议您采取如下步骤:

第一、使用百度地图API的地址解析接口,将地址解析为经纬度point数据,并存储在数据库中,方便以后查询和使用;

第二、如果有些地址解析失败了,请使用坐标拾取工具,人工地找到经纬度point信息,并同样储存起来。(坐标拾取工具,请点击这里。)

记住,只有经纬度point信息,能让你打点的位置万无一失!

解说:

什么是地址解析?

地址解析,即Geocoder类,是根据一个地址得到对应的经纬度point。注:地址需要详细到街道,例如“北京市海淀区中关村南大街”。

地址解析类有两个方法,一是getPoint,通过详细到街道的地址,得出一个经纬度。

地址解析的格式如下:省+城市+区县+街道 (可以不用门牌号)

地址解析成功的例子:北京市 北京市 海淀区 中关村南大街 27号

这是地址解析一定会失败的例子:南京路工行(1、根本没有指定城市,区县。中国有很多城市有南京路,不清楚到底是那一条南京路。2、南京路上可能有不止一个工行,比如银行,ATM,办事处等。)

另外一个是getLocation,又称反地址解析。它利用经纬度point,得出一个详细的地址。

什么是智能搜索?

智能搜索,即localsearch类,可以根据任意关键词查询到对应的POI信息。

关键词可以是“上海市麦当劳”“重庆市解放碑”,当没有城市信息时,默认在当前城市进行搜索。

Localsearch类会根据关键词的内容,智能地搜索POI的title和content信息。比如,搜索“家乐福”时,也能搜索到家乐福附近的面馆,停车场等信息。

智能搜索有三种方法,分别是:search、searchInBounds和searchNearby。利用此三种方法可以搜索到百度地图数据库中所有POI信息。

展现结果:

1、地址解析geocoder类

getPoint方法

getLocation方法

2、智能搜索localsearch类

search方法

searchInbounds方法

searchNearby方法

清除上地图所有覆盖物,map.clearOverlays();

清除检索结果,myLocalsearch.clearResults();

秘籍:

搜索“肯德基”“招商银行”这样的关键词时,使用智能搜索localsearch

搜索详细到街道的地址时,如“北京市海淀区中关村南大街27号”,使用地址解析geocoder

全部源代码:

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>地址解析和智能搜索</title><script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script></head><body><h2>1、地址解析Geocoder</h2><input style="width:300px;" type="text" value="上海市浦东新区花木路" id="address_1" /><input value="地址解析" type="button" onclick="fun_geocoder_getPoint();" />(getPoint:需要输入详细到街道的地址)</br><span style="display:inline-block;line-height:20px;width:300px;font-size:14px;border-bottom:1px solid #ccc;" type="text" id="address_2"></span><input value="反地址解析" type="button" onclick="fun_geocoder_getLocation();" />(getLocation:点击反地址解析后,点击地图返回地址。)</br><h2>2、智能搜索Localsearch</h2><input style="width:300px;" type="text" value="冀兴驾校" id="keyword_1" /><input value="智能搜索" type="button" onclick="fun_search();" />(search:在指定城市或全国内搜索关键词。)</br><input style="width:300px;" type="text" value="肯德基" id="keyword_2" /><input value="视野内搜索" type="button" onclick="fun_searchInBounds();" />(searchInBound:在可视范围内搜索关键词内容)</br><input style="width:100px;" type="text" value="银行" id="keyword_3_keywords" /><input style="width:75px;" type="text" value="116.381452" id="keyword_3_center_x" /><input style="width:75px;" type="text" value="39.914446" id="keyword_3_center_y" /><input style="width:50px;" type="text" value="500" id="keyword_3_radius" /><input value="周边搜索" type="button" onclick="fun_searchNearby();" />(searchNearby:中心点为字符串时,将自动忽略半径)</br><div style="clear:both;margin:10px 0 0;"></div><div style="width:520px;height:340px;border:1px solid gray;float:left;" id="container"></div><div style="width:300px;height:340px;float:left;" id="results"></div><div style="clear:both;"></div><input type="button" onclick="map.clearOverlays();myLocalsearch.clearResults();" style="margin:10px 0 0;height:50px;width:100px;" value="洗刷地图" />  (清除地图上的覆盖物和检索结果)</body></html><script type="text/javascript">//以下两句话用来创建地图var map = new BMap.Map("container");    //创建地图容器map.centerAndZoom("北京市",12);         //初始化地图。设置中心点和地图级别

//添加鱼骨控件map.addControl(new BMap.NavigationControl());

//获取各个id的value/*var value_address_1 = document.getElementById("address_1").value;var value_keyword_1 = document.getElementById("keyword_1").value;var value_keyword_2 = document.getElementById("keyword_2").value;var value_keyword_3_keywords = document.getElementById("keyword_3_keywords").value;var value_keyword_3_center_x = document.getElementById("keyword_3_center_x").value;var value_keyword_3_center_y = document.getElementById("keyword_3_center_y").value;var value_keyword_3_radius = document.getElementById("keyword_3_radius").value;*/

//创建地址解析的实例var myGeo = new BMap.Geocoder();//地址解析的函数function fun_geocoder_getPoint(){var value_address_1 = document.getElementById("address_1").value;    myGeo.getPoint(value_address_1, function(point){if (point) {        map.centerAndZoom(point, 15);        map.addOverlay(new BMap.Marker(point));      }    }, "全国");}//反地址解析的函数function fun_geocoder_getLocation(){    map.addEventListener("click", function(e){var pt = e.point;        myGeo.getLocation(pt, function(rs){var addComp = rs.addressComponents;            document.getElementById("address_2").innerHTML = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;        });    });}

//智能搜索Localsearch类var options = {renderOptions: {map: map, panel: "results"}};var myLocalsearch = new BMap.LocalSearch(map,options);//模糊查询search方法function fun_search(){var value_keyword_1 = document.getElementById("keyword_1").value;    myLocalsearch.search(value_keyword_1);}//视野内搜索searchInBounds方法function fun_searchInBounds(){var value_keyword_2 = document.getElementById("keyword_2").value;    myLocalsearch.searchInBounds(value_keyword_2, map.getBounds());}//周边搜索fun_searchNearby方法function fun_searchNearby(){var value_keyword_3_keywords = document.getElementById("keyword_3_keywords").value;var value_keyword_3_center_x = document.getElementById("keyword_3_center_x").value;var value_keyword_3_center_y = document.getElementById("keyword_3_center_y").value;var value_keyword_3_radius = document.getElementById("keyword_3_radius").value;    myLocalsearch.searchNearby(value_keyword_3_keywords,new BMap.Point(value_keyword_3_center_x,value_keyword_3_center_y),value_keyword_3_radius);}</script>

转载于:https://www.cnblogs.com/milkmap/archive/2012/01/29/2331332.html

【百度地图API】如何区分地址解析和智能搜索?相关推荐

  1. 百度地图2.0API 区分地址解析( BMap.Geocoder().getPoint())和智能搜索(BMap.LocalSearch)

    如下代码所示,我们要实现一个功能,用户在搜索框输入搜索位置关键字,这通常是简单的关键字,需要模糊匹配搜索,比如输入"南山区",会默认定位到深圳南山区 当我们用 var geoc = ...

  2. 跨域请求(使用jsonp实现跨域请求)百度地图api证逆地址解析获取周边信息(pois)

    新手程序员,新手博客,如果那里写的不好,还请大神们补充,指错 最近项目里面需要做一个电子围栏的功能,我这边做的就是需要把商户的地址的经纬度存进数据库,本来这些从百度地图API里面有Demo可以看,但是 ...

  3. 百度地图api初使用,行政区划及搜索

    最近发现了百度地图api这个好东西,官网上细致的demo和讲解,所以写了以下html 里面包含这几个功能:地图调用,行政区边界,还有一个地图搜索的搜索框 行政区边界demo 搜索框demo 所以第一步 ...

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

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

  5. 百度地图API和高德地图API资料集锦

    [高德地图API]从零开始学高德JS API(五)路线规划--驾车|公交|步行 [高德地图API]从零开始学高德JS API(四)搜索服务--POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数 ...

  6. 【百度地图API】JS版本的常见问题

    1.请问如何将我的店铺标注在百度地图上?我是否可以做区域代理?在百度地图上标注是否免费? 答复: 这里只负责API的技术咨询,不解决任何地图标注问题.在百度地图上标注自己公司,即气泡标注业务.该业务已 ...

  7. 百度地图api开发详解(android版).pdf,百度地图API开发指南原版.pdf

    百度地图API开发指南原版 百度地图 API 开发指南 百度地图 API 开发指南 目录 简介 3 什么是百度地图 API 3 面向的读者 3 获取 API 3 开发移动平台上的地图应用 3 兼容性 ...

  8. 使用百度地图API 逆地址解析

    使用百度地图API 逆地址解析 .数据库中查询出地址,调用百度API解析 <script type="text/javascript" src="http://ap ...

  9. c语言api获取百度地图,H5调用百度地图API获取地理位置

    //获取当前位置 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ alert ...

最新文章

  1. Android json请求格式与from表单格式
  2. 平面设计师如何掌握色彩心理学(实用技巧)
  3. 研究了 2 天,终于知道 JDK 8 默认 GC 收集器了!
  4. Kubernetes Federation V2搭建(持续更新)
  5. 切点、切面:@Aspect、@PointCut相关的个人总结
  6. 大数据24小时:腾讯拟30亿元加码云计算,谷歌母公司Alphabet成立网络安全子公司“编年史”
  7. Blazor WebAssembly 3.2.0 正式起飞,blazor 适合你吗?
  8. java编程思想2_《JAVA编程思想2》笔记
  9. bartender实现即扫即打印功能扫描完后自动打印_日本彩色激光打印机推荐人气排名15款...
  10. linux文件系统命令
  11. 火狐linux ubuntu16.04,在Ubuntu16.04系统上更新FireFox浏览器(即火狐浏览器)到最新版本...
  12. OO第二次博客——电梯系列总结
  13. Mac M1 百度网盘客户端无法打开,网络连接不上
  14. 软件测试之验收测试三要点
  15. [解疑][VS]Visual Studio软件编程时,ID号的格式ID_,IDS_,IDC_,IDI_,IDB_,IDD_之间有什么区别?
  16. BMC-IPMB specification
  17. 利用正则表达式判断邮箱
  18. 前端学习之CSS模块
  19. 转:王树国,怎样的校长才是一位好校长?
  20. linux 内核usleep,linux 内核 usleep

热门文章

  1. php ecos,php
  2. 利用MEGA32制作辉光数码管显示电路
  3. 2021年春季学期-信号与系统-第十四次作业参考答案-第九小题参考答案
  4. 你曾经是那手握烙铁的少年
  5. 2021年春季学期-信号与系统-第五次作业参考答案
  6. quartz 分布式_后端必备分布式技术之-调度系统Quartz设计原理
  7. 计算机组成原理_在线作业1,20秋《计算机组成原理》在线作业1
  8. sql group by 取每组符合条件_从零学SQL-经典面试题
  9. 9. 设计二个函数分别计算sinx和cosx_工程人常用的12个excel和9个wps技巧
  10. linux 目录说明