getSuggestion(options:Object)

        用于获取输入关键字的补完与提示,帮助用户快速输入

        注:坐标系采用gcj02坐标系


options属性说明

属性 类型 必填 说明
keyword String 用户输入的关键词(希望获取后续提示的关键词)
region String 设置城市名,限制关键词所示的地域范围,如,仅获取“广州市”范围内的提示内容,默认值全国
region_fix Number 取值: 0:[默认]当前城市无结果时,自动扩大范围到全国匹配 1:固定在当前城市
policy Number 检索策略,目前支持:
policy=0:默认,常规策略
policy=1:本策略主要用于收货地址、上门服务地址的填写,
提高了小区类、商务楼宇、大学等分类的排序,过滤行政区、
道路等分类(如海淀大街、朝阳区等),排序策略引入真实用户对输入提示的点击热度,
使之更为符合此类应用场景,体验更为舒适
location String 定位坐标,传入后,若用户搜索关键词为类别词(如酒店、餐馆时),与此坐标距离近的地点将靠前显示,格式: location=lat,lng (示例:location:39.11457,116.55332)
get_subpois Number 是否返回子地点,如大厦停车场、出入口等取值:
0 [默认]不返回
1 返回
该参数适用于 jssdkv1.1 jssdkv1.2
filter String 最多支持五个分类
搜索指定分类
category=公交站
搜索多个分类
category=大学,中学
(注意参数值要进行url编码)
该参数适用于 jssdkv1.1 jssdkv1.2
address_format String 短地址,缺省时返回长地址,可选值:'short’
该参数适用于 jssdkv1.1 jssdkv1.2
page_size Number 每页条目数,最大限制为20条,默认值10
该参数适用于 jssdkv1.1 jssdkv1.2
page_index Number 第x页,默认第1页
该参数适用于 jssdkv1.1 jssdkv1.2
sig String 签名校验
开启WebServiceAPI签名校验的必传参数,只需要传入生成的SK字符串即可,不需要进行MD5加密操作
该参数适用于 jssdkv1.2

调用结果

        通过属性success, fail, complete的回调参数来接收调用结果

        success的回调参数可以有2个,第1个参数接收调用结果,第2个参数控制返回处理后的数据(非必须参数),示例:success:function(res,data)

        该属性适用于 jssdkv1.1 jssdkv1.2

名称 类型 必填 说明
status number 状态码,0为正常,
310请求参数信息有误,
311Key格式错误,
306请求有护持信息请检查字符串,
110请求来源未被授权
message string 状态说明,即对状态码status进行说明,
如:
status为0,message为"query ok",为正常,
status为310,message为"请求参数信息有误",
status为311,message为"key格式错误",
status为306,message为"请求有护持信息请检查字符串",
status为110,message为"请求来源未被授权"
count number 本次搜索结果总数
data array 搜索结果POI数组,每项为一个POI对象
id string POI唯一标识
title string POI名称
address string 地址
province string
type number POI类型,值说明:0:普通POI / 1:公交车站 / 2:地铁站 / 3:公交线路 / 4:行政区划
city string
adcode string 行政区划代码
type number POI类型,值说明:0:普通POI / 1:公交车站 / 2:地铁站 / 3:公交线路 / 4:行政区划
location object 坐标
lat number 纬度
lng number 经度

示例

WXML 模板文件中添加组件:

<!--绑定输入事件-->
<input style="border:1px solid black;" bindinput="getsuggest" value="{{backfill}}"></input>
<!--关键词输入提示列表渲染-->
<view wx:for="{{suggestion}}" wx:key="index">
    <!--绑定回填事件-->
    <view>
    <!--根据需求渲染相应数据-->
    <!--渲染地址title-->
    <view style="text-align:center;" bindtap="backfill" id="{{index}}">{{item.title}}</view>
    <!--渲染详细地址-->
    <view style="font-size:12px;color:#666;text-align:center;">{{item.addr}}</view>
    </view>
</view>

Javascript 关键代码片段:

// 引入SDK核心类
var QQMapWX = require('xxx/qqmap-wx.js');
 
// 实例化API核心类
var qqmapsdk = new QQMapWX({
    key: '开发密钥(key)' // 必填
});
 
//在Page({})中使用下列代码
//数据回填方法
backfill: function (e) {
    var id = e.currentTarget.id;
    for (var i = 0; i < this.data.suggestion.length;i++){
      if(i == id){
        this.setData({
          backfill: this.data.suggestion[i].title
        });
      }  
    }
  },
 
//触发关键词输入提示事件
getsuggest: function(e) {
    var _this = this;
    //调用关键词提示接口
    qqmapsdk.getSuggestion({
      //获取输入框值并设置keyword参数
      keyword: e.detail.value, //用户输入的关键词,可设置固定值,如keyword:'KFC'
      //region:'北京', //设置城市名,限制关键词所示的地域范围,非必填参数
      success: function(res) {//搜索成功后的回调
        console.log(res);
        var sug = [];
        for (var i = 0; i < res.data.length; i++) {
          sug.push({ // 获取返回结果,放到sug数组中
            title: res.data[i].title,
            id: res.data[i].id,
            addr: res.data[i].address,
            city: res.data[i].city,
            district: res.data[i].district,
            latitude: res.data[i].location.lat,
            longitude: res.data[i].location.lng
          });
        }
        _this.setData({ //设置suggestion属性,将关键词搜索结果以列表形式展示
          suggestion: sug
        });
      },
      fail: function(error) {
        console.error(error);
      },
      complete: function(res) {
        console.log(res);
      }
    });
}

接口调用说明

getSuggestion(options:Object)方法调用接口服务如下:
/ws/place/v1/suggestion 关键词输入提示

注:微信小程序JavaScript SDK通过对腾讯位置服务WebServiceAPI接口进行封装而形成,因此和直接调用WebSerivceAPI的限制是等同的,
具体可参考:腾讯位置服务WebServiceAPI配额及使用限制

这篇文章对您解决问题是否有帮助?

已解决
未解决