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

当我们用 var geoc = new BMap.Geocoder(); geoc实例去解析关键字,输入“南山区”搜索,得到的却是北京天安门的默认经纬度

// 中文搜索定位handleSearch = (v = '深圳市', flag) => {this.setState({ searchText: v });if (v && !flag) {const { BMap } = window// 创建地址解析器实例     var geoc = new BMap.Geocoder();// 将地址解析结果显示在地图上,并调整地图视野    geoc.getPoint(v, (point) => {// 当地址搜索没有结果时 百度地图会默认指向北京 经度116 纬度39-40 因此该种情况不予处理if (point && (point.lng.toString().indexOf('116') > -1 || point.lat.toString().indexOf('39') > -1 || point.lat.toString().indexOf('40') > -1)) {// Toast.info('没有搜索结果', 500, () => { Toast.hide() });return}if (point) {var map = new BMap.Map("allmap");// this.setMarker()做以下4条语句的工作// map.clearOverlays(); // 清除所有的marker图标// var marker = new BMap.Marker(point); // 创建标注// map.addOverlay(marker); // 将标注添加到地图中// map.centerAndZoom(point, this.zoomLevel || 15);this.setMarker(map, point, this.zoomLevel || 15);map.addEventListener("click", (e) => this.showInfo(e, map, point));// map.addOverlay(new BMap.Marker(point));}});}}

而当我们使用localSearch本地智能搜索时,却能做到模糊匹配,比如输入“南山区”,会默认定位到深圳南山区

// 中文搜索定位handleSearch = (v = '深圳市', flag) => {this.setState({ searchText: v });if (v && !flag) {const { BMap } = window;var map = new BMap.Map("allmap");var localSearch = new BMap.LocalSearch(map);localSearch.enableAutoViewport(); // 允许自动调节窗体大小localSearch.setSearchCompleteCallback((searchResult) => {var poi = searchResult && searchResult.getPoi(0);// console.log('searchResult===>poi', searchResult, poi)if (poi) {this.setMarker(map, poi.point, this.zoomLevel || 15);}})localSearch.search(v);}}

原因是这两种API的应用场景不同,原因参考这篇文章 https://blog.csdn.net/weixin_34149796/article/details/85686362

小贴士:

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

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

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

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

解说:

什么是地址解析?

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

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

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

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

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

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

什么是智能搜索?

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

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

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

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

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

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

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

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

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

  3. 3百度地图api3.0-批量地址解析坐标

    准备工作 引入百度地图api的js+准备style样式+准备地图容器div 准备测试数据 //在这里输入想要获取的地名坐标var adds = [ '上海市黄浦区人民大道201号2楼', '上海市青浦 ...

  4. 【百度地图API】如何使用suggestion--下拉列表方式的搜索建议

    摘要: 百度地图上有一个很强大的搜索建议功能,以下拉列表的方式展示出来.比如,输入"百度",下拉列表中就会出现"北京市海淀区百度在线网络技术(北京)有限公司". ...

  5. 利用百度地图api,自定义起始点进行驾车路线的搜索,并可以根据不同驾车策略给出驾驶指导

    利用百度地图api,通过在输入框(带自动填充)输入起始点,然后根据用户选择的不同驾车策略来进行驾车路线搜索并显示具体的路线信息.驾车策略共三种,默认路线(时间最短).最短路程.不走高速.左侧搜索栏可以 ...

  6. 简单打开百度地图APP的方法,并可以直接检索出搜索的位置

    方法特别简单,就是一个url http://map.baidu.com/mobile/webapp/place/detail/qt=inf&uid=uid/vt=map url中红色字体的ui ...

  7. vue项目 调用百度地图 BMap is not defined

    这次老板新接了一个四点半官网页面,使用vue来写.emm--我感觉整个人都不好了,两天半解决了20个静态页面.还好vue写页面简直飞快,遇到一个vue的新坑,使用百度地图. 研究了好一会,总是报错BM ...

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

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

  9. 用百度地图API分析打交通大数据

    百度地图API, 文档不全,例子不细致. 在网上还没有太多有用的例子.比如说下面几个需求的解决方案就找不到: 1. 如何用百度地图API查询一个地点的经纬度. 2. 如何用百度地图通过一个经纬度查询商 ...

最新文章

  1. python的flask实现接口_使用python的Flask实现一个接口mock数据(傻瓜教程)
  2. docker 部署 redis
  3. mongodb 主从配置,带auth验证模式
  4. airflow零基础入门
  5. python长整数相乘_python写的大整数相乘的方法
  6. 前端面试题和setTimeout异步
  7. idea 删除补丁_带着好奇心去探索IDEA
  8. 图像压缩算法python_Python基于opencv的图像压缩算法实例分析
  9. 多级放大电路的耦合方式
  10. kali钓鱼(超详细)
  11. 敏捷领导力2.0培训体会
  12. 污水处理成本高怎么办?智能网关+云平台提供你完美解决方案
  13. 小程序加盟怎么样?加盟小程序赚钱吗?
  14. 近20万奖金+ 学术会议论文:2021PAKDD异常检测大赛来了!
  15. vue获取上一个页面路由
  16. 用于大规模视觉定位的直接2D-3D匹配(IROS 2021)
  17. EtcGame华丽升级为Coingame 新增ETH投注!
  18. 2021-MAXP-DGL图机器学习大赛-Graph@ICT-复盘与总结【rank6】
  19. 关于打架以及打架的策略的问题
  20. python ipaddress模块使用

热门文章

  1. DaoCloud道客云原生开源项目Clusterpedia(The Encyclopedia of Kubernetes clusters)加持kubectl,检索多集群资源
  2. 953-验证外星语词典
  3. 物联网远程开关模块_一种基于物联网的远程开关的制作方法
  4. dy手把手教你开橱窗
  5. 面试题准备(一):原型、原型链
  6. 表单验证通过输入框获取用户输入的密码,如果输入密码为“happy123”,则显示“密码输入正确”,否则提示“密码输入错误”,如果输入三次,显示提示信息“三分钟后在尝试”
  7. 在Linux-C中使用read函数返回值为0的问题
  8. 销巴租车再传喜讯,大批订单近日交付
  9. python爬虫抓取网站技巧总结
  10. pythonDDOS攻击