search.js 4.84 KB
// pages/reserve/search.js
// 引入SDK核心类
var QQMapWX = require('../../utils/qqmap-wx-jssdk');
// 实例化API核心类
var qqmapsdk = new QQMapWX({
  key: 'SDEBZ-I74W4-QLGUX-XXYXU-HIR23-3QFBJ' // 必填
});
import util from '../../utils/util';
const {regeneratorRuntime} = global
const search_history_cache_key='SEARCH_HISTORY_CACHE_KEY';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    history:[],
    suggestion:[],
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getHistory();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },
  getHistory(){
    let ca=util.cache(search_history_cache_key);
    if(ca){
      this.setData({
        history:ca
      })
    }
  },
  setHistory(item){
    let newca=[item];
    let ca=this.data.history;
    let maxL=20;
    for(let i=0;i<ca.length;i++){
      if(ca[i].id!=item.id){
        newca.push(ca[i]);
      }
      if(newca.length>maxL) break;
    }
    util.cache(search_history_cache_key,newca);
    this.setData({
      history:newca,
    })
  },
  //在Page({})中使用下列代码
  //数据回填方法
  backfill: function (e) {
    var id = e.currentTarget.id;
    for (var i = 0; i < this.data.suggestion.length; i++) {
      if (i == id) {
        console.log(this.data.suggestion[i])
        this.setHistory(this.data.suggestion[i])
        let pages = getCurrentPages();
        let p = pages[pages.length - 2];
        p.setSuggestion(this.data.suggestion[i])
        //util.cache('suggestion',this.data.suggestion[i]);
        this.setData({
          backfill: this.data.suggestion[i].title
        });
        wx.navigateBack();
      }
    }
  },
  backHistoryFill: function (e) {
    var i = util.attr(e,'index');
    let item=this.data.history[i];
    console.log(item)
    this.setHistory(item)
    this.setData({
      backfill: item.title
    });

    let pages = getCurrentPages();
    let p = pages[pages.length - 2];
    p.setSuggestion(item)
    wx.navigateBack();
  },
  inputVal:'',
  //触发关键词输入提示事件
  getsuggest: function (e) {
    var _this = this;
    //调用关键词提示接口
    this.inputVal=e.detail.value;
    if(e.detail.value.length<1){
      return this.setData({
        suggestion: []
      })
    }
    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) {
        _this.setData({ //设置suggestion属性,将关键词搜索结果以列表形式展示
          suggestion: []
        });
        console.error(error);
      },
      complete: function (res) {
        console.log('getsuggest',res);
      }
    });
  },
  nearby_search: function () {
    var _this = this;
    // 调用接口
    let location='';
    if(this.data.suggestion.length>0){
      location=this.data.suggestion[0]
    }
    qqmapsdk.search({
      keyword: this.inputVal,  //搜索关键词
      page_size:20,
      location:location,
      success: function (res) { //搜索成功后的回调
        var mks = []
        for (var i = 0; i < res.data.length; i++) {
          mks.push({ // 获取返回结果,放到mks数组中
            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:mks,
        });
      },
      fail: function (res) {
        console.log(res);
      },
      complete: function (res) {
        console.log('nearby_search',res);
      }
    });
  },
})