一、在开发微信小程序地图的过程中,有这样一个需求,用户发表祝福语,然后存入数据库,可以在地图上显示用户头像并且点击用户头像时显示祝福语。
二、自己在开发时遇到的问题:
1微信头像是网络,而地图的markers中的iconPath只能使用本地
2将网络缓存到本地,但是因为小程序的异步执行导致不能显示
三、解决办法:
1解决微信头像是网络的问题,可以使用wxdownloadFile({})方法来将头像缓存到本地,然后再将本地路径赋给iconPath即可,第一个不能使用网络的问题解决。
2异步请求导致本地缓存的不能在地图上显示,我的解决办法是,先通过request请求获取到祝福语后,用for循环赋值给markers,iconPath路径填写一个本地路径,同时调用一个方法,获取当前用户头像的本地缓存路径,获取成功后赋值给markers中每个对象的iconPath,所以一般来说,地图上的会有切换,首先显示的是本地的统一的,经过一段时间的请求后,一个个变为用户头像。
四、相关 *** 作代码
getBlessing: function(){
var that = this;
var getUserPic = function (pic_url,i) {
let cachePath;
if(pic_url==null || pic_url=='') return;
wxdownloadFile({
url: pic_url,
success: (pathInfo) => {
// pathInfopath 这是下载成的缓存链接,模拟器marker有时不支持>
把AngularJS开发的页面迁移到微信小程序
目录迁移
1、每个子模块页面换成Pages目录下的一个子目录,目录命名就是原子模块名。
2、原来的通用css、image、fonts等静态资源统一移到resource目录下,需要使用时,对于css样式文件,在对应子模块的wxss文件首部通过import命令引入;
替换规则
1、div需统一转换成View;
2、ng-show统一转换为wx:if;
3、ng-click统一转换为bindtap;
4、ng-repeat统一用wx:for替换;
5、ng-class中的样式选择性绑定可以直接把条件绑定语句嵌入class属性;
js代码
模块级代码迁移: 可将模块级作用域使用的通用逻辑搬到appjs中,通过app对象来引用;或者定义一个util模块,来做动态引入; 对于原生与h5交互时用到的自定义事件,需要根据具体场景做处理。
子模块级代码迁移:
可将Angular子模块代码直接迁移到小程序对应Page对象中,当然,对于Angular特定语法的$对象(例如$scope、$rootscope)的 *** 作,需要做全局替换,替换原则是:
1、$scope:与Page对象同生命周期内的$scope,可以直接替换成this;而对于非同一生命周期的(最常见的即是各种callback回调函数),需要将Page对象在方法外做引用保存(例如var self=this),然后在回调函数中使用。
2、$rootScope:推荐放入app对象中引用,或者自定义通用模块,然后动态引入;
3、数据模型:各页面中建立的数据模型,直接放入json文件中,如果涉及Angular特定语法的 *** 作,可参考上述两点的做法进行替换;
4、jsonp请求:将jsonp请求统一替换成wxrequest请求,只是原来的链式写法要换成参数型写法;
5、子模块间的页面跳转,$statego统一替换成wxnavigateTo或wxnavigateBack;
默认情况下,小程序官方提供的异步API都是基于回调函数实现的,这样就容易造成回调地狱的问题,代码的可读性、维护性差。API Promise化,指的是通过额外的配置,将官方提供的、基于回调函数的异步 API,升级改造为基于 Promise 的异步 API,从而提高代码的可读性、维护性,避免回调地狱的问题。实现API Promise化主要依赖于miniprogram-api-promise这个第三方的 npm 包。首先需要确认已经正确安装了node,使用的开发工具为微信官方的微信开发者工具。
在项目文件夹下对项目进行初始化,执行npm init -y 此时项目文件夹下会创建packagejson文件。执行npm i --save miniprogram-api-promise安装第三方包。此时会在项目根目录下创建node_modules文件夹。选择 工具-->构建npm 等待构建完成点击确定,此时会创建miniprogram_npm文件夹。在入口文件appjs中按需引入。
import {promisifyAll} from "miniprogram-api-promise"
const wxp=wxp={}
promisifyAll(wx,wxp)
然后就可以通过wxp来调用promise化的api。举个例子在testjs文件中
async getTestData(){
const {data:res}=await wxprequest({methods:'GET',url: '>
以上就是关于小程序可以在地图加上商家图标吗全部的内容,包括:小程序可以在地图加上商家图标吗、微信小程序storage缓存同步方法和异步方法的区别、怎么把AngularJS开发的页面迁移到微信小程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)