国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

uni-app 小程序使用騰訊地圖完成搜索功能

這篇具有很好參考價(jià)值的文章主要介紹了uni-app 小程序使用騰訊地圖完成搜索功能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

  • 使用uni-app開(kāi)發(fā)小程序時(shí)候使用騰訊地圖原生SDK是,要把原生寫法轉(zhuǎn)成vue寫法在這記錄一下。

  • 我們需要注意的是使用高德地圖時(shí)我們不僅要引入SDK,還要再uni-app中配置允許使用。

  • 由于uni-app內(nèi)置地圖就是騰訊,所以獲取位置的api,uni.getLocation坐標(biāo)不用轉(zhuǎn)換,直接使用。

  • 高德地圖原生sdk搜索,我用地點(diǎn)搜索,渲染結(jié)果。達(dá)到聯(lián)想值效果,點(diǎn)擊跳轉(zhuǎn)。

效果圖

20230330_213909

注意點(diǎn)

高德地圖原生SDK:微信小程序JavaScript SDK | 騰訊位置服務(wù)

1.高德地圖原生SDK,地點(diǎn)搜索,和關(guān)鍵詞輸入提示。

他們2個(gè)搜索結(jié)果差不多都是默認(rèn)10條,只不過(guò)關(guān)鍵詞輸入提示回來(lái)的結(jié)果是有地址的,但是我是一進(jìn)到頁(yè)面授權(quán)之后使用uni-app uni.getLocation()獲取坐標(biāo)。因?yàn)閮?nèi)置就是騰訊,所以可以直接傳值使用。因?yàn)榈攸c(diǎn)搜索的區(qū)域是坐標(biāo),不設(shè)置就是地圖默認(rèn)的坐標(biāo)。這樣一來(lái)我就可以不設(shè)置使用uni-app自帶定位傳值更合理,把它結(jié)果渲染成聯(lián)想值,點(diǎn)擊跳轉(zhuǎn)。關(guān)鍵詞輸入提示,默認(rèn)搜索區(qū)域是全國(guó),設(shè)置只能是中文字,這樣的話我們就要使用uni.getLocation()獲取完地址之后,使用逆地址解析獲取城市,這樣代碼會(huì)多很多,api也調(diào)用多次,不合理,所以我使用地點(diǎn)搜索。下面有圖

uni-app 小程序使用騰訊地圖完成搜索功能

?uni-app 小程序使用騰訊地圖完成搜索功能

2.使用uni-app時(shí),我們要允許使用小程序插件,不然可能會(huì)報(bào)錯(cuò)

uni-app官網(wǎng)

2.1在uni-app/manifest.json/微信小程序/勾選位置接口填寫使用說(shuō)明

uni-app 小程序使用騰訊地圖完成搜索功能

2.2或者在uni-app/manifest.json/源碼視圖,直接寫代碼

// 收貨地址和位置信息
        "requiredPrivateInfos": ["getLocation", "chooseLocation", "chooseAddress"],
        "permission": {
         ?  "scope.userLocation": {
         ? ?  "desc": "你的位置信息將用于小程序位置接口的效果展示" 
         ?  }
          }

uni-app 小程序使用騰訊地圖完成搜索功能

3.從用戶角度而言,我們應(yīng)該彈出個(gè)授權(quán)框比較合理和好看uni.authorize()可取uni-app官網(wǎng)搜索查看-下面有完整代碼

uni-app 小程序使用騰訊地圖完成搜索功能

4.查看高德地圖原生SDK使用文檔

uni-app 小程序使用騰訊地圖完成搜索功能

1.2步主頁(yè)文章有-申請(qǐng)騰訊地圖key

3.隨便下載一個(gè),我是在uni-app下建立utils/qqmap-wx-jssdk.js放在這里-可直接復(fù)制

/
**
 * 微信小程序JavaScriptSDK
 * 
 * @version 1.1
 * @date 2019-01-20
 */
?
var ERROR_CONF = {
 ?  KEY_ERR: 311,
 ?  KEY_ERR_MSG: 'key格式錯(cuò)誤',
 ?  PARAM_ERR: 310,
 ?  PARAM_ERR_MSG: '請(qǐng)求參數(shù)信息有誤',
 ?  SYSTEM_ERR: 600,
 ?  SYSTEM_ERR_MSG: '系統(tǒng)錯(cuò)誤',
 ?  WX_ERR_CODE: 1000,
 ?  WX_OK_CODE: 200
};
var BASE_URL = 'https://apis.map.qq.com/ws/';
var URL_SEARCH = BASE_URL + 'place/v1/search';
var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion';
var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/';
var URL_CITY_LIST = BASE_URL + 'district/v1/list';
var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren';
var URL_DISTANCE = BASE_URL + 'distance/v1/';
var EARTH_RADIUS = 6378136.49;
var Utils = {
 ?  /**
 ? ? * 得到終點(diǎn)query字符串
 ? ? * @param {Array|String} 檢索數(shù)據(jù)
 ? ? */
 ?  location2query(data) {
 ? ? ?  if (typeof data == 'string') {
 ? ? ? ? ?  return data;
 ? ? ?  }
 ? ? ?  var query = '';
 ? ? ?  for (var i = 0; i < data.length; i++) {
 ? ? ? ? ?  var d = data[i];
 ? ? ? ? ?  if (!!query) {
 ? ? ? ? ? ? ?  query += ';';
 ? ? ? ? ?  }
 ? ? ? ? ?  if (d.location) {
 ? ? ? ? ? ? ?  query = query + d.location.lat + ',' + d.location.lng;
 ? ? ? ? ?  }
 ? ? ? ? ?  if (d.latitude && d.longitude) {
 ? ? ? ? ? ? ?  query = query + d.latitude + ',' + d.longitude;
 ? ? ? ? ?  }
 ? ? ?  }
 ? ? ?  return query;
 ?  },
?
 ?  /**
 ? ? * 計(jì)算角度
 ? ? */
 ?  rad(d) {
 ? ?  return d * Math.PI / 180.0;
 ?  }, ?
 ?  /**
 ? ? * 處理終點(diǎn)location數(shù)組
 ? ? * @return 返回終點(diǎn)數(shù)組
 ? ? */
 ?  getEndLocation(location){
 ? ?  var to = location.split(';');
 ? ?  var endLocation = [];
 ? ?  for (var i = 0; i < to.length; i++) {
 ? ? ?  endLocation.push({
 ? ? ? ?  lat: parseFloat(to[i].split(',')[0]),
 ? ? ? ?  lng: parseFloat(to[i].split(',')[1])
 ? ? ?  })
 ? ?  }
 ? ?  return endLocation;
 ?  },
?
 ?  /**
 ? ? * 計(jì)算兩點(diǎn)間直線距離
 ? ? * @param a 表示緯度差
 ? ? * @param b 表示經(jīng)度差
 ? ? * @return 返回的是距離,單位m
 ? ? */
 ?  getDistance(latFrom, lngFrom, latTo, lngTo) {
 ? ?  var radLatFrom = this.rad(latFrom);
 ? ?  var radLatTo = this.rad(latTo);
 ? ?  var a = radLatFrom - radLatTo;
 ? ?  var b = this.rad(lngFrom) - this.rad(lngTo);
 ? ?  var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2)));
 ? ?  distance = distance * EARTH_RADIUS;
 ? ?  distance = Math.round(distance * 10000) / 10000;
 ? ?  return parseFloat(distance.toFixed(0));
 ?  },
 ?  /**
 ? ? * 使用微信接口進(jìn)行定位
 ? ? */
 ?  getWXLocation(success, fail, complete) {
 ? ? ?  wx.getLocation({
 ? ? ? ? ?  type: 'gcj02',
 ? ? ? ? ?  success: success,
 ? ? ? ? ?  fail: fail,
 ? ? ? ? ?  complete: complete
 ? ? ?  });
 ?  },
?
 ?  /**
 ? ? * 獲取location參數(shù)
 ? ? */
 ?  getLocationParam(location) {
 ? ? ?  if (typeof location == 'string') {
 ? ? ? ? ?  var locationArr = location.split(',');
 ? ? ? ? ?  if (locationArr.length === 2) {
 ? ? ? ? ? ? ?  location = {
 ? ? ? ? ? ? ? ? ?  latitude: location.split(',')[0],
 ? ? ? ? ? ? ? ? ?  longitude: location.split(',')[1]
 ? ? ? ? ? ? ?  };
 ? ? ? ? ?  } else {
 ? ? ? ? ? ? ?  location = {};
 ? ? ? ? ?  }
 ? ? ?  }
 ? ? ?  return location;
 ?  },
?
 ?  /**
 ? ? * 回調(diào)函數(shù)默認(rèn)處理
 ? ? */
 ?  polyfillParam(param) {
 ? ? ?  param.success = param.success || function () { };
 ? ? ?  param.fail = param.fail || function () { };
 ? ? ?  param.complete = param.complete || function () { };
 ?  },
?
 ?  /**
 ? ? * 驗(yàn)證param對(duì)應(yīng)的key值是否為空
 ? ? * 
 ? ? * @param {Object} param 接口參數(shù)
 ? ? * @param {String} key 對(duì)應(yīng)參數(shù)的key
 ? ? */
 ?  checkParamKeyEmpty(param, key) {
 ? ? ?  if (!param[key]) {
 ? ? ? ? ?  var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'參數(shù)格式有誤');
 ? ? ? ? ?  param.fail(errconf);
 ? ? ? ? ?  param.complete(errconf);
 ? ? ? ? ?  return true;
 ? ? ?  }
 ? ? ?  return false;
 ?  },
?
 ?  /**
 ? ? * 驗(yàn)證參數(shù)中是否存在檢索詞keyword
 ? ? * 
 ? ? * @param {Object} param 接口參數(shù)
 ? ? */
 ?  checkKeyword(param){
 ? ? ?  return !this.checkParamKeyEmpty(param, 'keyword');
 ?  },
?
 ?  /**
 ? ? * 驗(yàn)證location值
 ? ? * 
 ? ? * @param {Object} param 接口參數(shù)
 ? ? */
 ?  checkLocation(param) {
 ? ? ?  var location = this.getLocationParam(param.location);
 ? ? ?  if (!location || !location.latitude || !location.longitude) {
 ? ? ? ? ?  var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location參數(shù)格式有誤');
 ? ? ? ? ?  param.fail(errconf);
 ? ? ? ? ?  param.complete(errconf);
 ? ? ? ? ?  return false;
 ? ? ?  }
 ? ? ?  return true;
 ?  },
?
 ?  /**
 ? ? * 構(gòu)造錯(cuò)誤數(shù)據(jù)結(jié)構(gòu)
 ? ? * @param {Number} errCode 錯(cuò)誤碼
 ? ? * @param {Number} errMsg 錯(cuò)誤描述
 ? ? */
 ?  buildErrorConfig(errCode, errMsg) {
 ? ? ?  return {
 ? ? ? ? ?  status: errCode,
 ? ? ? ? ?  message: errMsg
 ? ? ?  };
 ?  },
?
 ?  /**
 ? ? * 
 ? ? * 數(shù)據(jù)處理函數(shù)
 ? ? * 根據(jù)傳入?yún)?shù)不同處理不同數(shù)據(jù)
 ? ? * @param {String} feature 功能名稱
 ? ? * search 地點(diǎn)搜索
 ? ? * suggest關(guān)鍵詞提示
 ? ? * reverseGeocoder逆地址解析
 ? ? * geocoder地址解析
 ? ? * getCityList獲取城市列表:父集
 ? ? * getDistrictByCityId獲取區(qū)縣列表:子集
 ? ? * calculateDistance距離計(jì)算
 ? ? * @param {Object} param 接口參數(shù)
 ? ? * @param {Object} data 數(shù)據(jù)
 ? ? */
 ?  handleData(param,data,feature){
 ? ?  if (feature === 'search') {
 ? ? ?  var searchResult = data.data;
 ? ? ?  var searchSimplify = [];
 ? ? ?  for (var i = 0; i < searchResult.length; i++) {
 ? ? ? ?  searchSimplify.push({
 ? ? ? ? ?  id: searchResult[i].id || null,
 ? ? ? ? ?  title: searchResult[i].title || null,
 ? ? ? ? ?  latitude: searchResult[i].location && searchResult[i].location.lat || null,
 ? ? ? ? ?  longitude: searchResult[i].location && searchResult[i].location.lng || null,
 ? ? ? ? ?  address: searchResult[i].address || null,
 ? ? ? ? ?  category: searchResult[i].category || null,
 ? ? ? ? ?  tel: searchResult[i].tel || null,
 ? ? ? ? ?  adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null,
 ? ? ? ? ?  city: searchResult[i].ad_info && searchResult[i].ad_info.city || null,
 ? ? ? ? ?  district: searchResult[i].ad_info && searchResult[i].ad_info.district || null,
 ? ? ? ? ?  province: searchResult[i].ad_info && searchResult[i].ad_info.province || null
 ? ? ? ?  })
 ? ? ?  }
 ? ? ?  param.success(data, {
 ? ? ? ?  searchResult: searchResult,
 ? ? ? ?  searchSimplify: searchSimplify
 ? ? ?  })
 ? ?  } else if (feature === 'suggest') {
 ? ? ?  var suggestResult = data.data;
 ? ? ?  var suggestSimplify = [];
 ? ? ?  for (var i = 0; i < suggestResult.length; i++) {
 ? ? ? ?  suggestSimplify.push({
 ? ? ? ? ?  adcode: suggestResult[i].adcode || null,
 ? ? ? ? ?  address: suggestResult[i].address || null,
 ? ? ? ? ?  category: suggestResult[i].category || null,
 ? ? ? ? ?  city: suggestResult[i].city || null,
 ? ? ? ? ?  district: suggestResult[i].district || null,
 ? ? ? ? ?  id: suggestResult[i].id || null,
 ? ? ? ? ?  latitude: suggestResult[i].location && suggestResult[i].location.lat || null,
 ? ? ? ? ?  longitude: suggestResult[i].location && suggestResult[i].location.lng || null,
 ? ? ? ? ?  province: suggestResult[i].province || null,
 ? ? ? ? ?  title: suggestResult[i].title || null,
 ? ? ? ? ?  type: suggestResult[i].type || null
 ? ? ? ?  })
 ? ? ?  }
 ? ? ?  param.success(data, {
 ? ? ? ?  suggestResult: suggestResult,
 ? ? ? ?  suggestSimplify: suggestSimplify
 ? ? ? ?  })
 ? ?  } else if (feature === 'reverseGeocoder') {
 ? ? ?  var reverseGeocoderResult = data.result;
 ? ? ?  var reverseGeocoderSimplify = {
 ? ? ? ?  address: reverseGeocoderResult.address || null,
 ? ? ? ?  latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null,
 ? ? ? ?  longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null,
 ? ? ? ?  adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null,
 ? ? ? ?  city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null,
 ? ? ? ?  district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null,
 ? ? ? ?  nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null,
 ? ? ? ?  province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null,
 ? ? ? ?  street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null,
 ? ? ? ?  street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null,
 ? ? ? ?  recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null,
 ? ? ? ?  rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null
 ? ? ?  };
 ? ? ?  if (reverseGeocoderResult.pois) {//判斷是否返回周邊poi
 ? ? ? ?  var pois = reverseGeocoderResult.pois;
 ? ? ? ?  var poisSimplify = [];
 ? ? ? ?  for (var i = 0;i < pois.length;i++) {
 ? ? ? ? ?  poisSimplify.push({
 ? ? ? ? ? ?  id: pois[i].id || null,
 ? ? ? ? ? ?  title: pois[i].title || null,
 ? ? ? ? ? ?  latitude: pois[i].location && pois[i].location.lat || null,
 ? ? ? ? ? ?  longitude: pois[i].location && pois[i].location.lng || null,
 ? ? ? ? ? ?  address: pois[i].address || null,
 ? ? ? ? ? ?  category: pois[i].category || null,
 ? ? ? ? ? ?  adcode: pois[i].ad_info && pois[i].ad_info.adcode || null,
 ? ? ? ? ? ?  city: pois[i].ad_info && pois[i].ad_info.city || null,
 ? ? ? ? ? ?  district: pois[i].ad_info && pois[i].ad_info.district || null,
 ? ? ? ? ? ?  province: pois[i].ad_info && pois[i].ad_info.province || null
 ? ? ? ? ?  })
 ? ? ? ?  }
 ? ? ? ?  param.success(data,{
 ? ? ? ? ?  reverseGeocoderResult: reverseGeocoderResult,
 ? ? ? ? ?  reverseGeocoderSimplify: reverseGeocoderSimplify,
 ? ? ? ? ?  pois: pois,
 ? ? ? ? ?  poisSimplify: poisSimplify
 ? ? ? ?  })
 ? ? ?  } else {
 ? ? ? ?  param.success(data, {
 ? ? ? ? ?  reverseGeocoderResult: reverseGeocoderResult,
 ? ? ? ? ?  reverseGeocoderSimplify: reverseGeocoderSimplify
 ? ? ? ?  })
 ? ? ?  }
 ? ?  } else if (feature === 'geocoder') {
 ? ? ?  var geocoderResult = data.result;
 ? ? ?  var geocoderSimplify = {
 ? ? ? ?  title: geocoderResult.title || null,
 ? ? ? ?  latitude: geocoderResult.location && geocoderResult.location.lat || null,
 ? ? ? ?  longitude: geocoderResult.location && geocoderResult.location.lng || null,
 ? ? ? ?  adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null,
 ? ? ? ?  province: geocoderResult.address_components && geocoderResult.address_components.province || null,
 ? ? ? ?  city: geocoderResult.address_components && geocoderResult.address_components.city || null,
 ? ? ? ?  district: geocoderResult.address_components && geocoderResult.address_components.district || null,
 ? ? ? ?  street: geocoderResult.address_components && geocoderResult.address_components.street || null,
 ? ? ? ?  street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null,
 ? ? ? ?  level: geocoderResult.level || null
 ? ? ?  };
 ? ? ?  param.success(data,{
 ? ? ? ?  geocoderResult: geocoderResult,
 ? ? ? ?  geocoderSimplify: geocoderSimplify
 ? ? ?  });
 ? ?  } else if (feature === 'getCityList') {
 ? ? ?  var provinceResult = data.result[0];
 ? ? ?  var cityResult = data.result[1];
 ? ? ?  var districtResult = data.result[2];
 ? ? ?  param.success(data,{
 ? ? ? ?  provinceResult: provinceResult,
 ? ? ? ?  cityResult: cityResult,
 ? ? ? ?  districtResult: districtResult
 ? ? ?  });
 ? ?  } else if (feature === 'getDistrictByCityId') {
 ? ? ?  var districtByCity = data.result[0];
 ? ? ?  param.success(data, districtByCity);
 ? ?  } else if (feature === 'calculateDistance') {
 ? ? ?  var calculateDistanceResult = data.result.elements; ?
 ? ? ?  var distance = [];
 ? ? ?  for (var i = 0; i < calculateDistanceResult.length; i++){
 ? ? ? ?  distance.push(calculateDistanceResult[i].distance);
 ? ? ?  } ? 
 ? ? ?  param.success(data, {
 ? ? ? ?  calculateDistanceResult: calculateDistanceResult,
 ? ? ? ?  distance: distance
 ? ? ? ?  });
 ? ?  } else {
 ? ? ?  param.success(data);
 ? ?  }
 ?  },
?
 ?  /**
 ? ? * 構(gòu)造微信請(qǐng)求參數(shù),公共屬性處理
 ? ? * 
 ? ? * @param {Object} param 接口參數(shù)
 ? ? * @param {Object} param 配置項(xiàng)
 ? ? * @param {String} feature 方法名
 ? ? */
 ?  buildWxRequestConfig(param, options, feature) {
 ? ? ?  var that = this;
 ? ? ?  options.header = { "content-type": "application/json" };
 ? ? ?  options.method = 'GET';
 ? ? ?  options.success = function (res) {
 ? ? ? ? ?  var data = res.data;
 ? ? ? ? ?  if (data.status === 0) {
 ? ? ? ? ? ?  that.handleData(param, data, feature);
 ? ? ? ? ?  } else {
 ? ? ? ? ? ? ?  param.fail(data);
 ? ? ? ? ?  }
 ? ? ?  };
 ? ? ?  options.fail = function (res) {
 ? ? ? ? ?  res.statusCode = ERROR_CONF.WX_ERR_CODE;
 ? ? ? ? ?  param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
 ? ? ?  };
 ? ? ?  options.complete = function (res) {
 ? ? ? ? ?  var statusCode = +res.statusCode;
 ? ? ? ? ?  switch(statusCode) {
 ? ? ? ? ? ? ?  case ERROR_CONF.WX_ERR_CODE: {
 ? ? ? ? ? ? ? ? ?  param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
 ? ? ? ? ? ? ? ? ?  break;
 ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ?  case ERROR_CONF.WX_OK_CODE: {
 ? ? ? ? ? ? ? ? ?  var data = res.data;
 ? ? ? ? ? ? ? ? ?  if (data.status === 0) {
 ? ? ? ? ? ? ? ? ? ? ?  param.complete(data);
 ? ? ? ? ? ? ? ? ?  } else {
 ? ? ? ? ? ? ? ? ? ? ?  param.complete(that.buildErrorConfig(data.status, data.message));
 ? ? ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ? ? ?  break;
 ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ?  default:{
 ? ? ? ? ? ? ? ? ?  param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG));
 ? ? ? ? ? ? ?  }
?
 ? ? ? ? ?  }
 ? ? ?  };
 ? ? ?  return options;
 ?  },
?
 ?  /**
 ? ? * 處理用戶參數(shù)是否傳入坐標(biāo)進(jìn)行不同的處理
 ? ? */
 ?  locationProcess(param, locationsuccess, locationfail, locationcomplete) {
 ? ? ?  var that = this;
 ? ? ?  locationfail = locationfail || function (res) {
 ? ? ? ? ?  res.statusCode = ERROR_CONF.WX_ERR_CODE;
 ? ? ? ? ?  param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
 ? ? ?  };
 ? ? ?  locationcomplete = locationcomplete || function (res) {
 ? ? ? ? ?  if (res.statusCode == ERROR_CONF.WX_ERR_CODE) {
 ? ? ? ? ? ? ?  param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
 ? ? ? ? ?  }
 ? ? ?  };
 ? ? ?  if (!param.location) {
 ? ? ? ? ?  that.getWXLocation(locationsuccess, locationfail, locationcomplete);
 ? ? ?  } else if (that.checkLocation(param)) {
 ? ? ? ? ?  var location = Utils.getLocationParam(param.location);
 ? ? ? ? ?  locationsuccess(location);
 ? ? ?  }
 ?  }
};
?
?
class QQMapWX {
?
 ?  /**
 ? ? * 構(gòu)造函數(shù)
 ? ? * 
 ? ? * @param {Object} options 接口參數(shù),key 為必選參數(shù)
 ? ? */
 ?  constructor(options) {
 ? ? ?  if (!options.key) {
 ? ? ? ? ?  throw Error('key值不能為空');
 ? ? ?  }
 ? ? ?  this.key = options.key;
 ?  };
?
 ?  /**
 ? ? * POI周邊檢索
 ? ? *
 ? ? * @param {Object} options 接口參數(shù)對(duì)象
 ? ? * 
 ? ? * 參數(shù)對(duì)象結(jié)構(gòu)可以參考
 ? ? * @see http://lbs.qq.com/webservice_v1/guide-search.html
 ? ? */
 ?  search(options) {
 ? ? ?  var that = this;
 ? ? ?  options = options || {};
?
 ? ? ?  Utils.polyfillParam(options);
?
 ? ? ?  if (!Utils.checkKeyword(options)) {
 ? ? ? ? ?  return;
 ? ? ?  }
?
 ? ? ?  var requestParam = {
 ? ? ? ? ?  keyword: options.keyword,
 ? ? ? ? ?  orderby: options.orderby || '_distance',
 ? ? ? ? ?  page_size: options.page_size || 10,
 ? ? ? ? ?  page_index: options.page_index || 1,
 ? ? ? ? ?  output: 'json',
 ? ? ? ? ?  key: that.key
 ? ? ?  };
?
 ? ? ?  if (options.address_format) {
 ? ? ? ? ?  requestParam.address_format = options.address_format;
 ? ? ?  }
?
 ? ? ?  if (options.filter) {
 ? ? ? ? ?  requestParam.filter = options.filter;
 ? ? ?  }
?
 ? ? ?  var distance = options.distance || "1000";
 ? ? ?  var auto_extend = options.auto_extend || 1;
 ? ? ?  var region = null;
 ? ? ?  var rectangle = null;
?
 ? ? ?  //判斷城市限定參數(shù)
 ? ? ?  if (options.region) {
 ? ? ? ?  region = options.region;
 ? ? ?  }
?
 ? ? ?  //矩形限定坐標(biāo)(暫時(shí)只支持字符串格式)
 ? ? ?  if (options.rectangle) {
 ? ? ? ?  rectangle = options.rectangle;
 ? ? ?  }
?
 ? ? ?  var locationsuccess = function (result) { ? ? ? ?
 ? ? ? ?  if (region && !rectangle) {
 ? ? ? ? ?  //城市限定參數(shù)拼接
 ? ? ? ? ?  requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")";
 ? ? ? ?  } else if (rectangle && !region) {
 ? ? ? ? ?  //矩形搜索
 ? ? ? ? ?  requestParam.boundary = "rectangle(" + rectangle + ")";
 ? ? ? ? ?  } else {
 ? ? ? ? ? ?  requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")";
 ? ? ? ? ?  } ? ? ? ? ? ?
 ? ? ? ? ?  wx.request(Utils.buildWxRequestConfig(options, {
 ? ? ? ? ? ? ?  url: URL_SEARCH,
 ? ? ? ? ? ? ?  data: requestParam
 ? ? ? ? ?  }, 'search'));
 ? ? ?  };
 ? ? ?  Utils.locationProcess(options, locationsuccess);
 ?  };
?
 ?  /**
 ? ? * sug模糊檢索
 ? ? *
 ? ? * @param {Object} options 接口參數(shù)對(duì)象
 ? ? * 
 ? ? * 參數(shù)對(duì)象結(jié)構(gòu)可以參考
 ? ? * http://lbs.qq.com/webservice_v1/guide-suggestion.html
 ? ? */
 ?  getSuggestion(options) {
 ? ? ?  var that = this;
 ? ? ?  options = options || {};
 ? ? ?  Utils.polyfillParam(options);
?
 ? ? ?  if (!Utils.checkKeyword(options)) {
 ? ? ? ? ?  return;
 ? ? ?  }
?
 ? ? ?  var requestParam = {
 ? ? ? ? ?  keyword: options.keyword,
 ? ? ? ? ?  region: options.region || '全國(guó)',
 ? ? ? ? ?  region_fix: options.region_fix || 0,
 ? ? ? ? ?  policy: options.policy || 0,
 ? ? ? ? ?  page_size: options.page_size || 10,//控制顯示條數(shù)
 ? ? ? ? ?  page_index: options.page_index || 1,//控制頁(yè)數(shù)
 ? ? ? ? ?  get_subpois : options.get_subpois || 0,//返回子地點(diǎn)
 ? ? ? ? ?  output: 'json',
 ? ? ? ? ?  key: that.key
 ? ? ?  };
 ? ? ?  //長(zhǎng)地址
 ? ? ?  if (options.address_format) {
 ? ? ? ?  requestParam.address_format = options.address_format;
 ? ? ?  }
 ? ? ?  //過(guò)濾
 ? ? ?  if (options.filter) {
 ? ? ? ?  requestParam.filter = options.filter;
 ? ? ?  }
 ? ? ?  //排序
 ? ? ?  if (options.location) {
 ? ? ? ?  var locationsuccess = function (result) {
 ? ? ? ? ?  requestParam.location = result.latitude + ',' + result.longitude;
 ? ? ? ? ?  wx.request(Utils.buildWxRequestConfig(options, {
 ? ? ? ? ? ?  url: URL_SUGGESTION,
 ? ? ? ? ? ?  data: requestParam
 ? ? ? ? ?  }, "suggest")); ? ? ?
 ? ? ? ?  };
 ? ? ? ?  Utils.locationProcess(options, locationsuccess);
 ? ? ?  } else {
 ? ? ? ?  wx.request(Utils.buildWxRequestConfig(options, {
 ? ? ? ? ?  url: URL_SUGGESTION,
 ? ? ? ? ?  data: requestParam
 ? ? ? ?  }, "suggest")); ? ? ?
 ? ? ?  } 
 ?  };
?
 ?  /**
 ? ? * 逆地址解析
 ? ? *
 ? ? * @param {Object} options 接口參數(shù)對(duì)象
 ? ? * 
 ? ? * 請(qǐng)求參數(shù)結(jié)構(gòu)可以參考
 ? ? * http://lbs.qq.com/webservice_v1/guide-gcoder.html
 ? ? */
 ?  reverseGeocoder(options) {
 ? ? ?  var that = this;
 ? ? ?  options = options || {};
 ? ? ?  Utils.polyfillParam(options);
 ? ? ?  var requestParam = {
 ? ? ? ? ?  coord_type: options.coord_type || 5,
 ? ? ? ? ?  get_poi: options.get_poi || 0,
 ? ? ? ? ?  output: 'json',
 ? ? ? ? ?  key: that.key
 ? ? ?  };
 ? ? ?  if (options.poi_options) {
 ? ? ? ? ?  requestParam.poi_options = options.poi_options
 ? ? ?  }
?
 ? ? ?  var locationsuccess = function (result) {
 ? ? ? ? ?  requestParam.location = result.latitude + ',' + result.longitude;
 ? ? ? ? ?  wx.request(Utils.buildWxRequestConfig(options, {
 ? ? ? ? ? ? ?  url: URL_GET_GEOCODER,
 ? ? ? ? ? ? ?  data: requestParam
 ? ? ? ? ?  }, 'reverseGeocoder'));
 ? ? ?  };
 ? ? ?  Utils.locationProcess(options, locationsuccess);
 ?  };
?
 ?  /**
 ? ? * 地址解析
 ? ? *
 ? ? * @param {Object} options 接口參數(shù)對(duì)象
 ? ? * 
 ? ? * 請(qǐng)求參數(shù)結(jié)構(gòu)可以參考
 ? ? * http://lbs.qq.com/webservice_v1/guide-geocoder.html
 ? ? */
 ?  geocoder(options) {
 ? ? ?  var that = this;
 ? ? ?  options = options || {};
 ? ? ?  Utils.polyfillParam(options);
?
 ? ? ?  if (Utils.checkParamKeyEmpty(options, 'address')) {
 ? ? ? ? ?  return;
 ? ? ?  }
?
 ? ? ?  var requestParam = {
 ? ? ? ? ?  address: options.address,
 ? ? ? ? ?  output: 'json',
 ? ? ? ? ?  key: that.key
 ? ? ?  };
?
 ? ? ?  //城市限定
 ? ? ?  if (options.region) {
 ? ? ? ?  requestParam.region = options.region;
 ? ? ?  }
?
 ? ? ?  wx.request(Utils.buildWxRequestConfig(options, {
 ? ? ? ? ?  url: URL_GET_GEOCODER,
 ? ? ? ? ?  data: requestParam
 ? ? ?  },'geocoder'));
 ?  };
?
?
 ?  /**
 ? ? * 獲取城市列表
 ? ? *
 ? ? * @param {Object} options 接口參數(shù)對(duì)象
 ? ? * 
 ? ? * 請(qǐng)求參數(shù)結(jié)構(gòu)可以參考
 ? ? * http://lbs.qq.com/webservice_v1/guide-region.html
 ? ? */
 ?  getCityList(options) {
 ? ? ?  var that = this;
 ? ? ?  options = options || {};
 ? ? ?  Utils.polyfillParam(options);
 ? ? ?  var requestParam = {
 ? ? ? ? ?  output: 'json',
 ? ? ? ? ?  key: that.key
 ? ? ?  };
?
 ? ? ?  wx.request(Utils.buildWxRequestConfig(options, {
 ? ? ? ? ?  url: URL_CITY_LIST,
 ? ? ? ? ?  data: requestParam
 ? ? ?  },'getCityList'));
 ?  };
?
 ?  /**
 ? ? * 獲取對(duì)應(yīng)城市ID的區(qū)縣列表
 ? ? *
 ? ? * @param {Object} options 接口參數(shù)對(duì)象
 ? ? * 
 ? ? * 請(qǐng)求參數(shù)結(jié)構(gòu)可以參考
 ? ? * http://lbs.qq.com/webservice_v1/guide-region.html
 ? ? */
 ?  getDistrictByCityId(options) {
 ? ? ?  var that = this;
 ? ? ?  options = options || {};
 ? ? ?  Utils.polyfillParam(options);
?
 ? ? ?  if (Utils.checkParamKeyEmpty(options, 'id')) {
 ? ? ? ? ?  return;
 ? ? ?  }
?
 ? ? ?  var requestParam = {
 ? ? ? ? ?  id: options.id || '',
 ? ? ? ? ?  output: 'json',
 ? ? ? ? ?  key: that.key
 ? ? ?  };
?
 ? ? ?  wx.request(Utils.buildWxRequestConfig(options, {
 ? ? ? ? ?  url: URL_AREA_LIST,
 ? ? ? ? ?  data: requestParam
 ? ? ?  },'getDistrictByCityId'));
 ?  };
?
 ?  /**
 ? ? * 用于單起點(diǎn)到多終點(diǎn)的路線距離(非直線距離)計(jì)算:
 ? ? * 支持兩種距離計(jì)算方式:步行和駕車。
 ? ? * 起點(diǎn)到終點(diǎn)最大限制直線距離10公里。
 ? ? *
 ? ? * 新增直線距離計(jì)算。
 ? ? * 
 ? ? * @param {Object} options 接口參數(shù)對(duì)象
 ? ? * 
 ? ? * 請(qǐng)求參數(shù)結(jié)構(gòu)可以參考
 ? ? * http://lbs.qq.com/webservice_v1/guide-distance.html
 ? ? */
 ?  calculateDistance(options) {
 ? ? ?  var that = this;
 ? ? ?  options = options || {};
 ? ? ?  Utils.polyfillParam(options);
?
 ? ? ?  if (Utils.checkParamKeyEmpty(options, 'to')) {
 ? ? ? ? ?  return;
 ? ? ?  }
?
 ? ? ?  var requestParam = {
 ? ? ? ? ?  mode: options.mode || 'walking',
 ? ? ? ? ?  to: Utils.location2query(options.to),
 ? ? ? ? ?  output: 'json',
 ? ? ? ? ?  key: that.key
 ? ? ?  };
?
 ? ? ?  if (options.from) {
 ? ? ? ?  options.location = options.from;
 ? ? ?  }
?
 ? ? ?  //計(jì)算直線距離
 ? ? ?  if(requestParam.mode == 'straight'){ ? ? ? ?
 ? ? ? ?  var locationsuccess = function (result) {
 ? ? ? ? ?  var locationTo = Utils.getEndLocation(requestParam.to);//處理終點(diǎn)坐標(biāo)
 ? ? ? ? ?  var data = {
 ? ? ? ? ? ?  message:"query ok",
 ? ? ? ? ? ?  result:{
 ? ? ? ? ? ? ?  elements:[]
 ? ? ? ? ? ?  },
 ? ? ? ? ? ?  status:0
 ? ? ? ? ?  };
 ? ? ? ? ?  for (var i = 0; i < locationTo.length; i++) {
 ? ? ? ? ? ?  data.result.elements.push({//將坐標(biāo)存入
 ? ? ? ? ? ? ?  distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng),
 ? ? ? ? ? ? ?  duration:0,
 ? ? ? ? ? ? ?  from:{
 ? ? ? ? ? ? ? ?  lat: result.latitude,
 ? ? ? ? ? ? ? ?  lng:result.longitude
 ? ? ? ? ? ? ?  },
 ? ? ? ? ? ? ?  to:{
 ? ? ? ? ? ? ? ?  lat: locationTo[i].lat,
 ? ? ? ? ? ? ? ?  lng: locationTo[i].lng
 ? ? ? ? ? ? ?  }
 ? ? ? ? ? ?  }); ? ? ? ? ? ?
 ? ? ? ? ?  }
 ? ? ? ? ?  var calculateResult = data.result.elements;
 ? ? ? ? ?  var distanceResult = [];
 ? ? ? ? ?  for (var i = 0; i < calculateResult.length; i++) {
 ? ? ? ? ? ?  distanceResult.push(calculateResult[i].distance);
 ? ? ? ? ?  } ?
 ? ? ? ? ?  return options.success(data,{
 ? ? ? ? ? ?  calculateResult: calculateResult,
 ? ? ? ? ? ?  distanceResult: distanceResult
 ? ? ? ? ?  });
 ? ? ? ?  };
 ? ? ? ? ?
 ? ? ? ?  Utils.locationProcess(options, locationsuccess);
 ? ? ?  } else {
 ? ? ? ?  var locationsuccess = function (result) {
 ? ? ? ? ?  requestParam.from = result.latitude + ',' + result.longitude;
 ? ? ? ? ?  wx.request(Utils.buildWxRequestConfig(options, {
 ? ? ? ? ? ?  url: URL_DISTANCE,
 ? ? ? ? ? ?  data: requestParam
 ? ? ? ? ?  },'calculateDistance'));
 ? ? ? ?  };
?
 ? ? ? ?  Utils.locationProcess(options, locationsuccess);
 ? ? ?  } ? ? ?
 ?  }
};
?
module.exports = QQMapWX;

4.去自己小程序后臺(tái)配置,要不然請(qǐng)求不到,在開(kāi)發(fā)管理-開(kāi)發(fā)設(shè)置-服務(wù)器域名配置

https://apis.map.qq.com

5.我把原生小程序語(yǔ)法轉(zhuǎn)成vue語(yǔ)法代碼如下

注意:直接復(fù)制會(huì)報(bào)錯(cuò),記得在uni-app中配置允許(上面有),記得引入SDK,我還有定位圖片記得替換。

<template>
    <view class="container">
        <!--綁定點(diǎn)擊事件-->
        <view class="tip">
            <input class="uni-input" @input="nearby_search" v-model="changeValue" focus
                placeholder="請(qǐng)輸入地址" /><!-- <span @click="nearby_search">搜索</span> -->
        </view>
        <!--關(guān)鍵詞輸入提示列表渲染-->
        <view class="conter">
            <view class="associate" @click="backfill(item)" v-for="(item,index) in suggestion" :key="index">
                <!--根據(jù)需求渲染相應(yīng)數(shù)據(jù)-->
                <!--渲染地址title-->
                <view class="title">{{item.title}}</view>
                <!--渲染詳細(xì)地址-->
                <view class="site">{{item.category}}</view>
            </view>
        </view>
        <!--地圖容器-->
        <map id="myMap" :markers="markers" style="width:100%;height:100vh;" :longitude="longitude" :latitude="latitude"
            scale='16'>
        </map>
    </view>
</template>
?
<script>
    import QQMapWX from '@/utils/qqmap-wx-jssdk.js'
    export default {
        data() {
            return {
                // 經(jīng)度
                longitude: '',
                // 緯度
                latitude: '',
                markers: [],
                // 騰訊地圖實(shí)例
                qqmapsdk: '',
                // 輸入框值
                changeValue: '',
                // 聯(lián)想值
                suggestion: [],
                // 防抖
                time: null
            }
?
        },
        onLoad() {
            const that = this
            // uni-app 授權(quán)彈出框
            uni.authorize({
                // 獲取
                scope: 'scope.userLocation',
                success() {
                    that.getLocation()
                    // 獲取用戶的當(dāng)前設(shè)置。
                    uni.getSetting({
                        success(res) {
                            console.log(res)
                        }
                    })
                },
                fail() {
                    console.log('失敗了');
                }
            })
        },
        methods: {
            // 獲取定位 生成地圖實(shí)例
            getLocation() {
                // 作用域問(wèn)題
                const that = this
                uni.getLocation({
                    type: 'wgs84',
                    success: function(res) {
                        console.log('當(dāng)前位置的經(jīng)度:' + res.longitude)
                        console.log('當(dāng)前位置的緯度:' + res.latitude)
                        that.longitude = res.longitude
                        that.latitude = res.latitude
                        that.qqmapsdk = new QQMapWX({
                            key: '你的key'
                        });
                        let mks = [];
                        mks.push({ // 獲取返回結(jié)果,放到mks數(shù)組中
                            title: '當(dāng)前定位',
                            id: '9999',
                            latitude: res.latitude,
                            longitude: res.longitude,
                            iconPath: "../../static/定位.png", //圖標(biāo)路徑
                            width: 20,
                            height: 20
                        })
                        that.markers = mks
                    }
                })
            },
            // 事件觸發(fā),調(diào)用接口
            nearby_search() {
                console.log('值', this.changeValue);
                if (!this.changeValue) {
                    this.suggestion = []
                    return uni.$showToast('請(qǐng)輸入內(nèi)容')
                }
                const that = this;
                // 調(diào)用接口
                // 輸入框防抖
                clearTimeout(this.time)
                that.time = setTimeout(() => {
                    that.qqmapsdk.search({
                        //搜索關(guān)鍵詞
                        keyword: that.changeValue,
                        //設(shè)置周邊搜索中心點(diǎn) 
                        // 設(shè)置就是以這里為中心點(diǎn)搜索,注釋掉也可以,以地圖為中心搜索
                        // location: '39.980014,116.313972',
                        //搜索成功后的回調(diào)
                        success: (res) => {
                            console.log('有結(jié)果');
                            that.suggestion = res.data
                            let mks = []
                            for (let i = 0; i < res.data.length; i++) {
                                mks.push({ // 獲取返回結(jié)果,放到mks數(shù)組中
                                    title: res.data[i].title,
                                    id: res.data[i].id,
                                    latitude: res.data[i].location.lat,
                                    longitude: res.data[i].location.lng,
                                    category: res.data[i].category,
                                    iconPath: "../../static/定位.png", //圖標(biāo)路徑
                                    width: 20,
                                    height: 20
                                })
                            }
                            //設(shè)置markers屬性,將搜索結(jié)果顯示在地圖中
                            // that.markers = mks
                            that.suggestion = mks
                        },
                        fail: function(res) {
                            console.log(res);
                        },
                        complete: function(res) {
                            console.log(res);
                        }
                    });
                }, 2000)
            },
            // 聯(lián)想值的點(diǎn)擊事件
            backfill(items) {
                console.log('id', items);
                const that = this
                console.log('12', items.longitude);
                console.log('23', items.latitude);
                that.longitude = items.longitude
                that.latitude = items.latitude
                that.suggestion.forEach(item => {
                    if (item.id == items.id) {
                        that.changeValue = item.title
                        let mks = []
                        mks.push({ // 獲取返回結(jié)果,放到mks數(shù)組中
                            title: items.title,
                            id: items.id,
                            latitude: items.latitude,
                            longitude: items.longitude,
                            iconPath: "../../static/定位.png", //圖標(biāo)路徑
                            width: 20,
                            height: 20
                        })
                        //設(shè)置markers屬性,將搜索結(jié)果顯示在地圖中
                        that.suggestion = []
                        that.markers = mks
                    }
                })
            },
        }
    }
</script>
?
<style lang="scss">
    .container {
        .tip {
            height: 40px;
            width: 280px;
            border: 1px solid #ccc;
            display: flex;
            align-items: center;
            background-color: #fff;
            border-radius: 3px;
            position: fixed;
            top: 10px;
            left: 10px;
            z-index: 200;
?
            .uni-input {
                flex: 1;
                height: 100%;
                padding-left: 5px;
            }
?
            span {
                width: 40px;
                color: #8b8c8f;
            }
        }
?
        .conter {
            width: 280px;
            background-color: #ffffff;
            margin-top: 10rpx;
            position: fixed;
            top: 52px;
            left: 10px;
            z-index: 20;
            border-radius: 3px;
?
            .associate {
                height: 40px;
                border-bottom: 1px solid #ccc;
                padding: 0 8px;
                overflow: hidden;
?
                .title {
                    font-size: 15px;
                }
?
                .site {
                    font-size: 12px;
                }
            }
        }
    }
</style>

總結(jié):

經(jīng)過(guò)這一趟流程下來(lái)相信你也對(duì) uni-app 小程序使用騰訊地圖完成搜索功能 有了初步的深刻印象,但在實(shí)際開(kāi)發(fā)中我 們遇到的情況肯定是不一樣的,所以我們要理解它的原理,萬(wàn)變不離其宗。加油,打工人!

什么不足的地方請(qǐng)大家指出謝謝 -- 風(fēng)過(guò)無(wú)痕文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-478984.html

到了這里,關(guān)于uni-app 小程序使用騰訊地圖完成搜索功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Uni-app 小程序使用騰訊云IM實(shí)時(shí)通訊

    Uni-app 小程序使用騰訊云IM實(shí)時(shí)通訊

    // IM 小程序 SDK npm install tim-wx-sdk --save // 發(fā)送圖片、文件等消息需要的 COS SDK? 如果不需要發(fā)送圖片等文件不需要下載 在APP.vue中配置好你的騰訊云配置 我測(cè)試了一下如果直接引入:import TIM from \\\'tim-wx-sdk\\\'的話在添加好友的地方會(huì)有錯(cuò)誤 所以我找到了這種引入方式 :import TIM

    2024年02月15日
    瀏覽(100)
  • 【微信小程序】使用uni-app——開(kāi)發(fā)首頁(yè)搜索框?qū)Ш綑冢赏瑫r(shí)兼容APP、H5、小程序)

    【微信小程序】使用uni-app——開(kāi)發(fā)首頁(yè)搜索框?qū)Ш綑冢赏瑫r(shí)兼容APP、H5、小程序)

    目錄 前言 App、H5效果 小程序效果 一、兼容APP、H5的方式 二、兼容小程序 三、實(shí)現(xiàn)同時(shí)兼容 首頁(yè)都會(huì)提供一個(gè)搜索框給到客戶,讓客戶自己去搜索自己想要的內(nèi)容,這里就需要導(dǎo)航欄,來(lái)實(shí)現(xiàn)搜索頁(yè)面的跳轉(zhuǎn),效果如下 在常見(jiàn)titleNView配置代碼示例中可以看到基本樣式的代碼

    2024年02月03日
    瀏覽(104)
  • uni-app微信小程序打開(kāi)第三方地圖

    uni-app微信小程序打開(kāi)第三方地圖

    小程序中有個(gè)按鈕點(diǎn)擊以后會(huì)調(diào)用手機(jī)中第三方地圖進(jìn)行導(dǎo)航。 參數(shù) 位置信息 經(jīng)度 與緯度。 原本以為一切順利,結(jié)果在微信開(kāi)發(fā)者工具中顯示如下: location參數(shù)格式錯(cuò)誤,請(qǐng)正確填寫 經(jīng)過(guò)測(cè)試發(fā)現(xiàn),因?yàn)槲以谖⑿判〕绦蛑惺褂?,所以默認(rèn)會(huì)使用騰訊地圖來(lái)顯示。 而我的經(jīng)

    2024年02月06日
    瀏覽(105)
  • 三分鐘完成小程序 uni-app、網(wǎng)站接入chatgpt實(shí)現(xiàn)聊天效果

    三分鐘完成小程序 uni-app、網(wǎng)站接入chatgpt實(shí)現(xiàn)聊天效果

    1.實(shí)現(xiàn)后臺(tái)接口 注冊(cè)laf云開(kāi)發(fā)賬號(hào) https://laf.dev/ 注冊(cè)一個(gè)應(yīng)用后進(jìn)入這個(gè)頁(yè)面: 下載依賴 chatgpt 配置apiKey 寫send函數(shù) 配置你的apiKey 2.uni-app小程序代碼中 //封裝cloud 發(fā)送消息方法 微信小程序中使用 3.實(shí)現(xiàn)效果 在這里插入圖片描述

    2024年02月11日
    瀏覽(92)
  • 【App端】uni-app使用百度地圖api和echarts省市地圖下鉆

    【App端】uni-app使用百度地圖api和echarts省市地圖下鉆

    近期的app項(xiàng)目中想加一個(gè)功能,展示全國(guó)各地的某一數(shù)據(jù)統(tǒng)計(jì)情況,想來(lái)想去,用echarts做地圖數(shù)據(jù)可視化直觀且美觀。于是就去研究了如何使用,其實(shí)在移動(dòng)端使用echarts地圖踩的bug挺多的,總結(jié)如下。 JavaScript API GL賬號(hào)和獲取密鑰 1、獲取SHA1:Android平臺(tái)云端打包 - 公共測(cè)試

    2024年02月11日
    瀏覽(92)
  • 【App端】uni-app使用echarts和百度地圖api

    【App端】uni-app使用echarts和百度地圖api

    近期的app項(xiàng)目中想加一個(gè)功能,展示全國(guó)各地的某一數(shù)據(jù)統(tǒng)計(jì)情況,想來(lái)想去,用echarts做地圖數(shù)據(jù)可視化直觀且美觀。于是就去研究了如何使用,其實(shí)在移動(dòng)端使用echarts地圖踩的bug挺多的,總結(jié)如下。 JavaScript API GL賬號(hào)和獲取密鑰 1、獲取SHA1:Android平臺(tái)云端打包 - 公共測(cè)試

    2024年02月11日
    瀏覽(88)
  • uni-app開(kāi)發(fā)小程序中遇到的map地圖的點(diǎn)聚合以及polygon劃分區(qū)域問(wèn)題

    uni-app開(kāi)發(fā)小程序中遇到的map地圖的點(diǎn)聚合以及polygon劃分區(qū)域問(wèn)題

    寫一篇文章來(lái)記錄以下我在開(kāi)發(fā)小程序地圖過(guò)程中遇到的兩個(gè)小坑吧,一個(gè)是點(diǎn)聚合,用的是joinCluster這個(gè)指令,另一個(gè)是polygon在地圖上劃分多邊形的問(wèn)題: 1.首先說(shuō)一下點(diǎn)聚合問(wèn)題,由于之前沒(méi)有做過(guò)小程序地圖問(wèn)題,所以瀏覽了很多資料,最終發(fā)現(xiàn)看的多了反而雜亂,而

    2024年02月11日
    瀏覽(89)
  • uni-app微信小程序獲取手機(jī)號(hào)授權(quán)登錄(復(fù)制即用,js完成敏感數(shù)據(jù)對(duì)稱解密,無(wú)需走服務(wù)端處理)

    uni-app微信小程序獲取手機(jī)號(hào)授權(quán)登錄(復(fù)制即用,js完成敏感數(shù)據(jù)對(duì)稱解密,無(wú)需走服務(wù)端處理)

    目錄 一、示例 二、具體實(shí)現(xiàn)說(shuō)明 獲取到的手機(jī)號(hào) 屬性說(shuō)明 屬性名 說(shuō)明 生效時(shí)機(jī) @getphonenumber 獲取用戶手機(jī)號(hào)回調(diào) open-type=\\\"getPhoneNumber\\\" ?按鈕寫法 接口說(shuō)明 接口 說(shuō)明 wx.login() 獲取登錄憑證(code),通過(guò)憑證進(jìn)而換取用戶登錄態(tài)信息 auth.code2Session 登錄憑證校驗(yàn) 參數(shù)說(shuō)明

    2024年02月10日
    瀏覽(46)
  • 微信小程序掃碼點(diǎn)餐(訂餐)系統(tǒng)(uni-app+SpringBoot后端+Vue管理端)項(xiàng)目全套源碼+完成文檔說(shuō)明+畢業(yè)論文

    微信小程序掃碼點(diǎn)餐(訂餐)系統(tǒng)(uni-app+SpringBoot后端+Vue管理端)項(xiàng)目全套源碼+完成文檔說(shuō)明+畢業(yè)論文

    摘要 隨著當(dāng)前社會(huì)人們的生活節(jié)奏越來(lái)越快,人們對(duì)生活效率的追求也越來(lái)越高,以往的傳統(tǒng)的點(diǎn)餐方式已不能滿足人們的需要,首先有些小型飯館是需要顧客排隊(duì)點(diǎn)餐,然后安排專人在臺(tái)前記錄,這樣不僅造成時(shí)間上的浪費(fèi),還浪費(fèi)人力,有些大型餐廳是當(dāng)顧客入座后,安

    2024年04月15日
    瀏覽(105)
  • uni-app引入地圖map組件--APP開(kāi)發(fā)

    uni-app引入地圖map組件--APP開(kāi)發(fā)

    需求場(chǎng)景:使用uni-app地圖組件,實(shí)現(xiàn)APP開(kāi)發(fā) 開(kāi)發(fā)環(huán)境:Mac,HbuildX3.4.14 測(cè)試環(huán)境:iOS真機(jī)調(diào)試 一、流程 1、關(guān)于Uini-app的map組件:官方文檔說(shuō)明。map組件是原生組件,目前只針對(duì)原生APP開(kāi)發(fā),因此通過(guò)app-nvue實(shí)現(xiàn),同時(shí)選擇的地圖服務(wù)商只能是高德地圖。 2、創(chuàng)建高德地圖應(yīng)用

    2024年02月15日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包