个人案例
mina开发实用工具
本小程序主要用于展示一些在微信小程序开发中 实用的工具库
mina-tools-client扫码体验
Y计算器
all in one 的计算能力合集
YCalculator扫码体验
求教大学生家教
帮助大学生和家长解决信息不对称的问题
求教大学生家教平台扫码体验
我也有这种需求,用swiper写页面间的切换。有时候需要阻止swiper的滑动切换,否则会影响页面作用滑动的事件。 单纯的加个view覆盖,会影响页面事件的监听。
swiper手动滑动开关- 需求的场景描述(希望解决的问题) 有一个类似于通知的滚动播报,采用的是纵向swiper - 希望提供的能力 想要禁止用户手动切换,期望加一个属性,是否允许手动滑动
2019-03-24建议事件绑定的时候使用catch;将可以合并的setData合并;利用css3的动画属性例如transform属性去完成,不要直接动态改height,会引起重绘,增加渲染层压力。 可以试试使用YrobotTouch,已经分装好了常用的手势事件:https://github.com/Yrobot/YrobotTouch-WXLP
监听滑动手势频繁setData的性能问题我们目前有个需求是:根据用户的滑动手势动态改变一个元素的高度 目前的实现方法是:监听手势滑动,实时用setData更新元素样式绑定的高度值 结果有时元素刷新高度延迟很严重,有时是手势滑动完成后1-2s,高度变化的动画才开始 看文档说是频繁setData,造成了小程序的渲染模块阻塞了,有没有什么替代方案可以解决这个问题呢?
2019-03-12遇到了同样的问题,最开始几个touchmove间隔是20ms左右,后面就不行了变成200ms
安卓上,wxs事件touchmove向下滑动后,之后的touchmove受限- 当前 Bug 的表现(可附上截图) 在安卓机器上,touchmove在数次deltaY为正数(下滑)的时候,touchmove的触发频率会被限制,导致动画卡顿 通过在touchmove收集时间戳并输出到控制台,发现touchmove的触发频率在数次后被限制在约200ms左右 - 预期表现 不限制touchmove的触发频率 - 复现路径 如果滑块一开始往上拖动,则动画流畅 如果滑块一开始往下拖动,则往后的拖动十分卡顿 - 提供一个最简复现 Demo https://developers.weixin.qq.com/miniprogram/dev/framework/view/interactive-animation.html 官方例子wxs事件的movable案例
2019-03-10这明显请求没加白名单啊,所以真机上只有打开调试才能正常请求。
小程序有关于引入第三方JS问题;(老板的刀已经摁住.问题已经解决参考请有序入场)当第三方接入 第三方接口调度了wx.request的时候. 请注意 一定要添加域名白名单; 在调试中;不需要任何白名单即可调试成功; -----------------------------------------------------------老板的刀块摁不住了.. T.T!!!! - 需求的场景描述(希望解决的问题) 小程序 因为没有业务接口可以直接获取定位地址的.都要选填.我们要实现自动定位的功能. 也就是一进主页就可以完成自动定位.也就实现这个效果. 以下为配图 但是在测试中出现问题了 [图片] 在测试中. 我们小程序上传了体验版 在正常访问的时候 好像调不出来. 授权之后.. 就再也没了反应.. 如果开启了调试模式 又一切正常.. 关闭调试模式又调不到方法;... 场景如下: [图片]打开调试.正常访问..一切正常.... [图片] 关闭调试. [图片] 仿佛调不到接口似得... 我这都不知道出了什么问题..调试都调不出来.. 在此. 把地图反馈那个接口反馈放上来. 该地图接口为腾讯地图.; 我担心如果上传上去正式 地图调不起来.我本地测试没问题; 在体验版打开小程序调试 [代码]/**[代码][代码] [代码][代码]* 微信小程序JavaScriptSDK[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* @version 1.0[代码][代码] [代码][代码]* @date 2017-01-10[代码][代码] [代码][代码]* @author jaysonzhou@tencent.com[代码][代码] [代码][代码]*/[代码] [代码]var[代码] [代码]ERROR_CONF = {[代码][代码] [代码][代码]KEY_ERR: 311,[代码][代码] [代码][代码]KEY_ERR_MSG: [代码][代码]'key格式错误'[代码][代码],[代码][代码] [代码][代码]PARAM_ERR: 310,[代码][代码] [代码][代码]PARAM_ERR_MSG: [代码][代码]'请求参数信息有误'[代码][代码],[代码][代码] [代码][代码]SYSTEM_ERR: 600,[代码][代码] [代码][代码]SYSTEM_ERR_MSG: [代码][代码]'系统错误'[代码][代码],[代码][代码] [代码][代码]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[代码] [代码]Utils = {[代码][代码] [代码][代码]/**[代码][代码] [代码][代码]* 得到终点query字符串[代码][代码] [代码][代码]* @param {Array|String} 检索数据[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]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;[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 使用微信接口进行定位[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]getWXLocation(success, fail, complete) {[代码][代码] [代码][代码]wx.getLocation({[代码][代码] [代码][代码]type: [代码][代码]'gcj02'[代码][代码],[代码][代码] [代码][代码]success: success,[代码][代码] [代码][代码]fail: fail,[代码][代码] [代码][代码]complete: complete[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 获取location参数[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]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;[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 回调函数默认处理[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]polyfillParam(param) {[代码][代码] [代码][代码]param.success = param.success || [代码][代码]function[代码] [代码]() { };[代码][代码] [代码][代码]param.fail = param.fail || [代码][代码]function[代码] [代码]() { };[代码][代码] [代码][代码]param.complete = param.complete || [代码][代码]function[代码] [代码]() { };[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 验证param对应的key值是否为空[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* @param {Object} param 接口参数[代码][代码] [代码][代码]* @param {String} key 对应参数的key[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]checkParamKeyEmpty(param, key) {[代码][代码] [代码][代码]if[代码] [代码](!param[key]) {[代码][代码] [代码][代码]var[代码] [代码]errconf = [代码][代码]this[代码][代码].buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +[代码][代码]'参数格式有误'[代码][代码]);[代码][代码] [代码][代码]param.fail(errconf);[代码][代码] [代码][代码]param.complete(errconf);[代码][代码] [代码][代码]return[代码] [代码]true[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]false[代码][代码];[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 验证参数中是否存在检索词keyword[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* @param {Object} param 接口参数[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]checkKeyword(param){[代码][代码] [代码][代码]return[代码] [代码]![代码][代码]this[代码][代码].checkParamKeyEmpty(param, [代码][代码]'keyword'[代码][代码]);[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 验证location值[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* @param {Object} param 接口参数[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]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参数格式有误'[代码][代码])[代码][代码] [代码][代码]param.fail(errconf);[代码][代码] [代码][代码]param.complete(errconf);[代码][代码] [代码][代码]return[代码] [代码]false[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]true[代码][代码];[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 构造错误数据结构[代码][代码] [代码][代码]* @param {Number} errCode 错误码[代码][代码] [代码][代码]* @param {Number} errMsg 错误描述[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]buildErrorConfig(errCode, errMsg) {[代码][代码] [代码][代码]return[代码] [代码]{[代码][代码] [代码][代码]status: errCode,[代码][代码] [代码][代码]message: errMsg[代码][代码] [代码][代码]};[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 构造微信请求参数,公共属性处理[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* @param {Object} param 接口参数[代码][代码] [代码][代码]* @param {Object} param 配置项[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]buildWxRequestConfig(param, options) {[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]options.header = { [代码][代码]"content-type"[代码][代码]: [代码][代码]"application/json"[代码] [代码]};[代码][代码] [代码][代码]options.method = [代码][代码]'GET'[代码][代码];[代码][代码] [代码][代码]options.success = [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]var[代码] [代码]data = res.data;[代码][代码] [代码][代码]if[代码] [代码](data.status === 0) {[代码][代码] [代码][代码]param.success(data);[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]param.fail(data);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]};[代码][代码] [代码][代码]options.fail = [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]res.statusCode = ERROR_CONF.WX_ERR_CODE;[代码][代码] [代码][代码]param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, result.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;[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 处理用户参数是否传入坐标进行不同的处理[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]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 {[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 构造函数[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* @param {Object} options 接口参数,key 为必选参数[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]constructor(options) {[代码][代码] [代码][代码]if[代码] [代码](!options.key) {[代码][代码] [代码][代码]throw[代码] [代码]Error([代码][代码]'key值不能为空'[代码][代码]);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]this[代码][代码].key = options.key;[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* POI周边检索[代码][代码] [代码][代码]*[代码][代码] [代码][代码]* @param {Object} options 接口参数对象[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* 参数对象结构可以参考[代码][代码] [代码][代码]* @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[代码] [代码]locationsuccess = [代码][代码]function[代码] [代码](result) {[代码][代码] [代码][代码]requestParam.boundary = [代码][代码]"nearby("[代码] [代码]+ result.latitude + [代码][代码]","[代码] [代码]+ result.longitude + [代码][代码]","[代码] [代码]+ distance + [代码][代码]","[代码] [代码]+ auto_extend +[代码][代码]")"[代码][代码];[代码][代码] [代码][代码]wx.request(Utils.buildWxRequestConfig(options, {[代码][代码] [代码][代码]url: URL_SEARCH,[代码][代码] [代码][代码]data: requestParam[代码][代码] [代码][代码]}));[代码][代码] [代码][代码]}[代码][代码] [代码][代码]Utils.locationProcess(options, locationsuccess);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* sug模糊检索[代码][代码] [代码][代码]*[代码][代码] [代码][代码]* @param {Object} options 接口参数对象[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* 参数对象结构可以参考[代码][代码] [代码][代码]* 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 || [代码][代码]'全国'[代码][代码],[代码][代码] [代码][代码]region_fix: options.region_fix || 0,[代码][代码] [代码][代码]policy: options.policy || 0,[代码][代码] [代码][代码]output: [代码][代码]'json'[代码][代码],[代码][代码] [代码][代码]key: that.key[代码][代码] [代码][代码]};[代码][代码] [代码][代码]wx.request(Utils.buildWxRequestConfig(options, {[代码][代码] [代码][代码]url: URL_SUGGESTION,[代码][代码] [代码][代码]data: requestParam[代码][代码] [代码][代码]}));[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 逆地址解析[代码][代码] [代码][代码]*[代码][代码] [代码][代码]* @param {Object} options 接口参数对象[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* 请求参数结构可以参考[代码][代码] [代码][代码]* 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[代码][代码] [代码][代码]}));[代码][代码] [代码][代码]};[代码][代码] [代码][代码]Utils.locationProcess(options, locationsuccess);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 地址解析[代码][代码] [代码][代码]*[代码][代码] [代码][代码]* @param {Object} options 接口参数对象[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* 请求参数结构可以参考[代码][代码] [代码][代码]* 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[代码][代码] [代码][代码]};[代码] [代码] [代码][代码]wx.request(Utils.buildWxRequestConfig(options, {[代码][代码] [代码][代码]url: URL_GET_GEOCODER,[代码][代码] [代码][代码]data: requestParam[代码][代码] [代码][代码]}));[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 获取城市列表[代码][代码] [代码][代码]*[代码][代码] [代码][代码]* @param {Object} options 接口参数对象[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* 请求参数结构可以参考[代码][代码] [代码][代码]* 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[代码][代码] [代码][代码]}));[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 获取对应城市ID的区县列表[代码][代码] [代码][代码]*[代码][代码] [代码][代码]* @param {Object} options 接口参数对象[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* 请求参数结构可以参考[代码][代码] [代码][代码]* 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[代码][代码] [代码][代码]}));[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 用于单起点到多终点的路线距离(非直线距离)计算:[代码][代码] [代码][代码]* 支持两种距离计算方式:步行和驾车。[代码][代码] [代码][代码]* 起点到终点最大限制直线距离10公里。[代码][代码] [代码][代码]*[代码][代码] [代码][代码]* @param {Object} options 接口参数对象[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* 请求参数结构可以参考[代码][代码] [代码][代码]* 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[代码][代码] [代码][代码]};[代码] [代码] [代码][代码]var[代码] [代码]locationsuccess = [代码][代码]function[代码] [代码](result) {[代码][代码] [代码][代码]requestParam.from = result.latitude + [代码][代码]','[代码] [代码]+ result.longitude;[代码][代码] [代码][代码]wx.request(Utils.buildWxRequestConfig(options, {[代码][代码] [代码][代码]url: URL_DISTANCE,[代码][代码] [代码][代码]data: requestParam[代码][代码] [代码][代码]}));[代码][代码] [代码][代码]}[代码][代码] [代码][代码]if[代码] [代码](options.from) {[代码][代码] [代码][代码]options.location = options.from;[代码][代码] [代码][代码]}[代码][代码] [代码] [代码] [代码][代码]Utils.locationProcess(options, locationsuccess);[代码][代码] [代码][代码]}[代码][代码]}[代码] [代码]module.exports = QQMapWX;[代码] - 希望提供的能力 出现这情况 .不知道怎么解决了!
2019-02-15同求,真机在网络良好的情况下,利用open-data无法获取头像。
用open-data获取头像失败网络通的情况下,用open-data组件获取头像失败;重新启动小程序也是获取不到,手机重启后显示才正常 - 当前 Bug 的表现(可附上截图) [图片] 正常显示: [图片]
2019-01-28唉,18年2月份的帖子,官方到现在没给答复啊
音频播放概率性失败请教一下,我现在使用 wx.createInnerAudioContext 这个接口,进行播放mp3格式的音频文件,src是http://www.xxx.com/xxx.mp3, 现在经常出现点了不播方法,触发了onplay事件(输出了onplay is running),但是不触发onended事件(未输出onEnded is running) 情况(也没有声音) 我在开发工具中怎么点都能播放,在真机上就概率性(较大概率)出现上述情况 手机是iPhonese。 麻烦指导下 [代码]const app = getApp();[代码][代码]const recorderManager = wx.getRecorderManager();[代码][代码]const innerAudioContext = wx.createInnerAudioContext();[代码][代码]var[代码] [代码]util = require([代码][代码]'../../utils/util.js'[代码][代码]);[代码][代码]Page({[代码][代码] [代码][代码]。。。。。[代码][代码] [代码][代码]//语音播放[代码][代码] [代码][代码]audioPlay: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码][代码],[代码][代码] [代码][代码]innerAudioContext.stop();[代码][代码] [代码][代码]innerAudioContext.src = url;[代码][代码] [代码][代码]innerAudioContext.play();[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码][代码]onLoad: [代码][代码]function[代码] [代码](options) {[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]/***音频组件开始 */[代码][代码] [代码][代码]innerAudioContext.obeyMuteSwitch = [代码][代码]false[代码][代码];[代码][代码] [代码][代码]innerAudioContext.onPlay(() => {[代码][代码] [代码][代码]console.log([代码][代码]"onplay is running"[代码][代码])[代码][代码] [代码][代码]var[代码] [代码]i = that.data.i;[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]playID: i[代码][代码] [代码][代码]});[代码][代码] [代码][代码]})[代码][代码] [代码][代码]innerAudioContext.onEnded(() => {[代码][代码] [代码][代码]console.log([代码][代码]"onEnded is running"[代码][代码])[代码][代码] [代码][代码]var[代码] [代码]i = that.data.i;[代码][代码] [代码][代码]if[代码] [代码](that.data.playID > -1) {[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]playID: -1[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码]}[代码][代码]})[代码]
2019-01-28真的是奇怪,模拟器上声音有,但偶尔又没有,真机测试直接一点声音也没有,真机上连onplay和onerror中的log都没有。
小程序播放声音时的路径问题感觉小程序的路径一直很混乱,页面跳转吧我的感觉是绝对路径不行,要相对的。今天播放声音在模拟器上是可以的,但手机上不行,网上也没有个说法,突然尝试换成绝对路径又可以了。话说官方给不能给个说法这路径我们别靠猜呀。 有问题的代码,相对路径下 createInnerAudioContext模拟器,真机都不行, wx.createAudioContext('myAudio') 模拟器可以,真机不行。 [图片] 可以的代码 [图片]
2019-01-28对的,用API去修改navigation颜色,背景色就必须要填,然后就没有透明的效果了,还不能用rgba,我觉得这是一个bug,微信官方应该要改一下这个API,或者直接出一个控制statusBar颜色的API。
导航栏在微信7.0真机下显示异常!!!状态栏为白色[图片] - 预期表现 但在app.json文件中开启了"navigationStyle": "custom",手机导航栏(状态栏)是全透明状态; 小程序默认展示也没有问题,但是当wx.setNavigationBarColor后状态栏就变为白色; 在开发工具预览没有问题,在真机预览就有问题(所有微信7.0手机,无论苹果或安卓); - 复现路径 打开上面代码片段; 生成二维码在手机进行预览; 向下滑动屏幕(状态栏就会变为白色);
2019-01-06没有官方给个解释吗?是不是bug啊,是bug的话我就不纠结了
"navigationStyle": "custom" 后,真机无法全屏当我在app.json里设置"navigationStyle": "custom" 后, 真机测试时,无法使用height:100% 达到全屏效果,模拟器正常。 代码如下: [图片] [图片] [图片] [图片] 真机效果: 型号:mix3 微信版本:7.0.0 WeChatLib:2.4.4 [图片] 底部无法完全覆盖page(底部粉红色的部分), "navigationStyle": "custom" 去掉之后就正常了。 这是个bug?
2019-01-05statusBar的字体颜色是跟随navigationBar的,所以想要让statusBar 的字体颜色改变只要设置那navigation的字体颜色,即: [代码]"navigationBarTextStyle": "black",[代码]这样statusBar 的字体颜色就变黑了 [图片]
关于安卓下自定义的 navigationBar 无法自定义状态栏颜色- 需求的场景描述(希望解决的问题) 安卓的沉浸模式可以使系统的状态栏颜色随着当前打开应用的顶部的颜色变化。但是配置项中设置了 navigationStyle: custom 之后,即使自定义的 navigationBar 只有一个颜色,安卓系统的顶部状态栏的颜色一直保持白色。 - 希望提供的能力 跟随新设置的颜色进行变化。 我理解可能因为有的开发者并不是设置单一颜色的,比如渐变或者是背景图片。但是希望官方能给个设置颜色的api,例如:wx.setStatusBarBgColor 这类的。只有一个白色的背景灵活度相当的低。
2018-12-23