小プログラムはどうやって所在都市を決めますか?周辺の捜索を開始します。


requestパッケージ
小規模プログラムのためのget/postのpromiseパッケージ
rq.js

/*
 * url {String}        
 * data {Object}      
 * param {Object} request  
 * method {String}     post   get  
*/
export function request(url, data={}, param={}, method='POST') {
 return new Promise((resolve, reject)=>{
  let postParam = {
   url, 
   method,
   data,
   // timeout
   // dataType
   // responseType
   header: {
    'content-type': 'application/json' //    
   },
   success(res) {
    resolve(res)
   },
   error: function (e) {
    reject(e)
   }
  }
  postParam = Object.assign(postParam, param)
  postParam.fail = postParam.error
  if (postParam.url) wx.request(postParam)
 })
}

module.exports = {
 get(url, data, param){
  return request(url, data={}, param={}, method='GET')
 },
 
 post(){
  return request.apply(null, arguments)
 }
}
位置サービス方法
ウィジェットの位置サービス機能を開通したいです。

簡単に三つの位置サービスをパッケージ化した方法。
  • 所在地都市
  • 地区の検索。
  • 範囲検索
  • 
    // request promise  
    const iKit = request('./rq.js') 
    
    // key              
    //     key     
    let key = 'JKDBZ-XZVLW-IAQR8-OROZ1-XR3G9-UYBD5'
    
    /*
     *     ... 
     *        ,     kfc    
     * key {String}      
     * region {String}      
    */
    export function searchRegion(kw, region) {
     let opts = {
      keyword: encodeURI(kw),
      boundary: region ? `region(${encodeURI(region)}, 0)` : '', // 0         ,1        
      page_size: 10, //           
      page_index: 1, //     
      key
     }
    
     return new Promise((resolve, rej)=>{
      iKit.get('https://apis.map.qq.com/ws/place/v1/search', opts).then(res=>{
       resolve(res.data.data)
      })
     })
    }
    
    /*
     *      ... 
     *                ,      ,    
     * key {String}      
     * params {Object}             lat  ,lng  ,distance  (   ) 
    */
    export function searchCircle(kw, params={}) {
     let {lat, lng, distance} = params
     if (!lat && !lng) return 
     if (!distance) distance = 1000 //       1000 
     let opts = {
      keyword: encodeURI(kw),
      boundary: `nearby(${lat},${lng},${distance})`,
      orderby: '_distance', //         ,     
      page_size: 20, //            
      page_index: 1, //      
      key
     }
    
     return new Promise((resolve, rej)=>{
      iKit.get('https://apis.map.qq.com/ws/place/v1/search', opts).then(res=>{
       resolve(res.data.data)
      })
     })
    }
    
    //       ,       
    /*
     *       ,        
     *          、   
     * lat {Number}   
     * lng {Number}    
    */
    export function myCity(lat, lng) {
     return new Promise((resolve, rej)=>{
      let opts = {
       location: `${lat},${lng}`,
       key
      }
      
      iKit.get(`https://apis.map.qq.com/ws/geocoder/v1/`, opts).then(res => {
       resolve(res.data.result)
      })
     })
    }
    呼び出し
    
    wx.getLocation({
      type: 'wgs84',
      success(location) {
       locationPosition = location
       
       //      
       myCity(location.latitude, location.longitude).then(res => {
        let myCityInfo = res.ad_info
        let {city, nation, province, city_code, adcode} = myCityInfo
        console.log({title: `  : ${nation},  : ${province},  : ${city}`})
       })
       
       //     
       searchCircle('  ', {
        lat: location.latitude,
        lng: location.longitude,
        distance: 500
       }).then(res=>{
        console.log(res)
       })
       
       //     
       searchRegion('  ', '  ').then(res=>{
        console.log(res)
       })
      }
    })
     以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。