百度地图 - 周边检索

简介

今天我们学习一个比较好玩的 地图api LocalSearch。通过它我们可以在地图上对周边地址检索,也可以在规定范围检索地址。

LocalSearch

  1. 属于地图api的服务类,主要用于位置检索、周边检索和范围检索。
  2. 参数类型可以是地图实例、坐标点或城市名称的字符串。
  3. 当参数为地图实例时,检索位置由当前地图中心点确定,且搜索结果的标注将自动加载到地图上,并支持调整地图视野层级;当参数为坐标时,检索位置由该点所在位置确定;当参数为城市名称时,检索会在该城市内进行。
  4. 详细文档

关键字检索

  • search() 根据检索词发起检索,传入数组时可执行多关键字的检索。
var local = new BMapGL.LocalSearch(map, {
    renderOptions: { map: map }
})
local.search('医院')
  • 没看错在地图api强大的功能下就这么几行代码就完成了检索。
    image.png

获取检索数据

  • 在开发中除了在地图上显示标注外,我们还需要获取检索到的数据用于其他操作。
  • LocalSearch()构造函数的第二个参数LocalSearchOptions,就是用来获取检索后的数据。
  1. renderOptions 自动生成DOM文本列表块展示。
  2. onSearchComplete 检索完成后的回调函数。在这里获取检索后的数据。
      ...
      // 天机 renderOptions使用的元素
      <div id="r-result"></div>
      ...
      var myKeys = ['酒店', '医院']
      var local = new BMapGL.LocalSearch(map, {
        renderOptions: { map: map, panel: 'r-result' },
        onSearchComplete: function (res) {
          console.log('🚀 ~ file: 地图周边检索.html ~ line 33 ~ res', res)
        }
      })
      local.search(myKeys)

image.png

根据区域检索

  • 当搜索范围过大时可能会出现无结果或响应慢的情况,这时候就需要控制范围。
  • searchInBounds() 根据范围和检索词发起范围检索,传入数组可执行多关键字的检索。
  • BMapGL.Bounds() 创建地理坐标的矩形区域。
      var local = new BMapGL.LocalSearch(map, {
        renderOptions: { map: map }
      })
      var pStart = new BMapGL.Point(121.480509, 31.23592)
      var pEnd = new BMapGL.Point(126.480509, 36.23592)
      // 自己规定范围
      var bs = new BMapGL.Bounds(pStart, pEnd)
      local.searchInBounds('医院', bs)

image.png

  • 除里矩形当然也有圆形范围的搜索方式。
  • searchNearby() 根据中心点、半径与检索词发起周边检索。传入数组可执行多关键字的检索。
  • 要注意的是这里的半径单位是
      var local = new BMapGL.LocalSearch(map, {
        renderOptions: { map: map, autoViewport: false }
      })
      local.searchNearby('医院', new BMapGL.Point(121.480509, 31.23592), 1000)

image.png

检索数据控制

  • 检索数据并不是一次全部返回的,是通过分页的方式返回。这样我们就可以控制一个范围内展示多少数据,来保证用户体验度。
  • setPageCapacity() 设置一页展示多少条数据。
  • gotoPage() 跳转数据到指定页。
      // 总页数
      var pageAll = 0
      var myKeys = ['酒店', '医院']
      var local = new BMapGL.LocalSearch(map, {
        renderOptions: { map: map, panel: 'r-result' },
        onSearchComplete: function (res) {
          console.log('🚀 ~ file: 地图周边检索.html ~ line 35 ~ res', res)
          pageAll = res[0].getNumPages()
        }
      })
      local.setPageCapacity(20)
      local.search(myKeys)

      var i = 0 // 页数
      function onBut() {
        if (i === pageAll) {
          i = 0
        } else {
          i++
        }
        local.gotoPage(i)
      }

1.gif

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
百度地图API的地点检索参数包括以下几个: - query:检索关键词,表示要搜索的地点或POI的名称。 - tag:检索分类,表示要搜索的地点或POI的分类标签。 - region:检索区域,表示要搜索的地点或POI所在的城市或区域。 - output:返回数据格式,可以选择json或xml。 - ak:开发者密钥,用于身份验证和访问控制。 例如,使用以下URL进行地点检索: https://api.map.baidu.com/place/v2/search?query=ATM机&tag=银行&region=北京&output=json&ak=您的ak 其中,query参数为ATM机,表示搜索关键词为ATM机;tag参数为银行,表示搜索分类为银行;region参数为北京,表示搜索区域为北京;output参数为json,表示返回数据格式为JSON;ak参数为您的开发者密钥,用于身份验证和访问控制。 #### 引用[.reference_title] - *1* [vue结合百度地图api实现地址检索、路线规划等功能](https://blog.csdn.net/weixin_52641692/article/details/122646517)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [利用百度地图API地点搜索获取资料(python)](https://blog.csdn.net/hq19940416/article/details/121032582)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值