数据缓存
每个微信小程序都可以有自己的本地缓存,可以通过 wx.setStorage(wx.setStorageSync)、wx.getStorage(wx.getStorageSync)、wx.clearStorage(wx.clearStorageSync)对本地缓存进行设置、获取和清理。同一个微信用户,同一个小程序 storage 上限为 10MB。localStorage 以用户维度隔离,同一台设备上,A 用户无法读取到 B 用户的数据。
注意: 如果用户储存空间不足,会清空最近最久未使用的小程序的本地缓存。并不建议将关键信息全部存在 localStorage,以防储存空间不足或用户换设备的情况。
wx.setStorage(OBJECT)
将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口
OBJECT参数说明:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | String | 是 | 本地缓存中的指定的 key |
data | Object/String | 是 | 需要存储的内容 |
success | Function | 否 | 接口调用成功的回调函数 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
wx.setStorage({
key:"key",
data:"value"
})
wx.setStorageSync(KEY,DATA)
将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口
参数说明:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | String | 是 | 本地缓存中的指定的 key |
data | Object/String | 是 | 需要存储的内容 |
try {
wx.setStorageSync('key', 'value')
} catch (e) {
}
wx.getStorage(OBJECT)
从本地缓存中异步获取指定 key 对应的内容
OBJECT参数说明:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | String | 是 | 本地缓存中的指定的 key |
success | Function | 否 | 接口调用的回调函数,res = {data: key对应的内容} |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success返回参数说明:
参数名 | 类型 | 说明 |
---|---|---|
data | String | key对应的内容 |
wx.getStorage({
key: 'key',
success: function(res) {
console.log(res.data)
}
})
wx.getStorageSync(KEY)
从本地缓存中同步获取指定 key 对应的内容
参数说明:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | String | 是 | 本地缓存中的指定的 key |
try {
var value = wx.getStorageSync('key')
if (value) {
// Do something with return value
}
} catch (e) {
// Do something when catch error
}
wx.getStorageInfo(OBJECT)
异步获取当前storage的相关信息
OBJECT参数说明:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
success | Function | 是 | 接口调用的回调函数,详见返回参数说明 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success返回参数说明:
参数名 | 类型 | 说明 |
---|---|---|
keys | String Array | 当前storage中所有的key |
currentSize | Number | 当前占用的空间大小, 单位kb |
limitSize | Number | 限制的空间大小,单位kb |
wx.getStorageInfo({
success: function(res) {
console.log(res.keys)
console.log(res.currentSize)
console.log(res.limitSize)
}
})
wx.getStorageInfoSync
同步获取当前storage的相关信息
try {
var res = wx.getStorageInfoSync()
console.log(res.keys)
console.log(res.currentSize)
console.log(res.limitSize)
} catch (e) {
// Do something when catch error
}
wx.removeStorage(OBJECT)
从本地缓存中异步移除指定 key
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | String | 是 | 本地缓存中的指定的 key |
success | Function | 否 | 接口调用的回调函数 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
wx.removeStorage({
key: 'key',
success: function(res) {
console.log(res.data)
}
})
wx.removeStorageSync(KEY)
从本地缓存中同步移除指定 key
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
keys | String | 是 | 当前storage中所有的key |
try {
wx.removeStorageSync('key')
} catch (e) {
// Do something when catch error
}
wx.clearStorage()
清理本地数据缓存
wx.clearStorage()
wx.clearStorageSync()
同步清理本地数据缓存
try {
wx.clearStorageSync()
} catch(e) {
// Do something when catch error
}
tip: 本地数据存储的大小限制为 10MB
位置
获取位置
wx.getLocation(OBJECT)
获取当前的地理位置、速度。当用户离开小程序后,此接口无法调用。需要用户授权 scope.userLocation
OBJECT参数说明:
| 参数 | 类型 | 必填 | 说明 | 最低版本 |
|:--------:|:--------:|:----:|:-----------------------------------------------------------------------------:| |
| type | String | 否 | 默认为 wgs84 返回 GPS 坐标;gcj02 返回国测局坐标,可用于wx.openLocation的坐标 | 1.6.0 |
| altitude | Boolean | 否 | 传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度 | |
| success | Function | 是 | 接口调用成功的回调函数,返回内容详见返回参数说明 | |
| fail | Function | 否 | 接口调用失败的回调函数 | |
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | |
success返回参数说明:
参数 | 说明 | 最低版本 |
---|---|---|
latitude | 纬度,浮点数,范围为-90~90,负数表示南纬 | |
longitude | 经度,浮点数,范围为-180~180,负数表示西经 | |
speed | 速度,浮点数,单位m/s | |
accuracy | 位置的精确度 | |
altitude | 高度,单位 m | 1.2.0 |
verticalAccuracy | 垂直精度,单位 m(Android 无法获取,返回 0) | 1.2.0 |
horizontalAccuracy | 水平精度,单位 m | 1.2.0 |
wx.getLocation({
type: 'wgs84',
success: function(res) {
var latitude = res.latitude
var longitude = res.longitude
var speed = res.speed
var accuracy = res.accuracy
}
})
Tips
1.工具中定位模拟使用IP定位,可能会有一定误差。且工具目前仅支持 gcj02 坐标。
2.使用第三方服务进行逆地址解析时,请确认第三方服务默认的坐标系,正确进行坐标转换
wx.chooseLocation(OBJECT)
打开地图选择位置。需要用户授权 scope.userLocation
OBJECT参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
success | Function | 是 | 接口调用成功的回调函数,返回内容详见返回参数说明 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success返回参数说明:
参数 | 说明 |
---|---|
latitude | 纬度,浮点数,范围为-90~90,负数表示南纬,使用 gcj02 国测局坐标系 |
longitude | 经度,浮点数,范围为-180~180,负数表示西经,使用 gcj02 国测局坐标系 |
name | 位置名称 |
address | 详细地址 |
查看位置
wx.openLocation(OBJECT):使用微信内置地图查看位置。需要用户授权 scope.userLocation
OBJECT参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
latitude | Float | 是 | 纬度,范围为-90~90,负数表示南纬。使用 gcj02 国测局坐标系 |
longitude | Float | 是 | 经度,范围为-180~180,负数表示西经。使用 gcj02 国测局坐标系 |
scale | INT | 否 | 缩放比例,范围5~18,默认为18 |
name | String | 否 | 位置名 |
address | String | 否 | 地址的详细说明 |
success | Function | 否 | 接口调用成功的回调函数,返回内容详见返回参数说明 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
wx.getLocation({
type: 'gcj02', //返回可以用于wx.openLocation的经纬度
success: function(res) {
var latitude = res.latitude
var longitude = res.longitude
wx.openLocation({
latitude: latitude,
longitude: longitude,
scale: 28
})
}
})
bug: iOS 6.3.30 type 参数不生效,只会返回 wgs84 类型的坐标信息
地图组件控制
wx.createMapContext(mapId, this):创建并返回 map 上下文 mapContext 对象。在自定义组件下,第二个参数传入组件实例this,以操作组件内 组件
mapContext
mapContext 通过 mapId 跟一个 组件绑定,通过它可以操作对应的 组件
mapContext 对象的方法列表
| 参数 | 类型 | 说明 | 最低版本 |
|:-----------------:|:------:|:-------------------------------------------------------------------------:| |
| getCenterLocation | OBJECT | 获取当前地图中心的经纬度,返回的是 gcj02 坐标系,可以用于 wx.openLocation | |
| moveToLocation | 无 | 将地图中心移动到当前定位点,需要配合map组件的show-location使用 | |
| translateMarker | OBJECT | 平移marker,带动画 | 1.2.0 |
| includePoints | OBJECT | 缩放视野展示所有经纬度 | 1.2.0 |
| getRegion | OBJECT | 获取当前地图的视野范围 | 1.4.0 |
| getScale | OBJECT | 获取当前地图的缩放级别 | 1.4.0 |
getCenterLocation 的 OBJECT 参数列表
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
success | Function | 否 | 接口调用成功的回调函数 ,res = { longitude: "经度", latitude: "纬度"} |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
translateMarker 的 OBJECT 参数列表
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
markerId | Number | 是 | 指定marker |
destination | Object | 是 | 指定marker移动到的目标点 |
autoRotate | Boolean | 是 | 移动过程中是否自动旋转marker |
rotate | Number | 是 | marker的旋转角度 |
duration | Number | 否 | 动画持续时长,默认值1000ms,平移与旋转分别计算 |
animationEnd | Function | 否 | 动画结束回调函数 |
fail | Function | 否 | 接口调用失败的回调函数 |
includePoints 的 OBJECT 参数列表
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
points | Array | 是 | 要显示在可视区域内的坐标点列表,[{latitude, longitude}] |
padding | Array | 否 | 坐标点形成的矩形边缘到地图边缘的距离,单位像素。格式为[上,右,下,左],安卓上只能识别数组第一项,上下左右的padding一致。开发者工具暂不支持padding参数 |
getRegion 的 OBJECT 参数列表
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
success | Function | 否 | 接口调用成功的回调函数,res = {southwest, northeast},西南角与东北角的经纬度 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
getScale 的 OBJECT 参数列表
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
success | Function | 否 | 接口调用成功的回调函数,res = {scale} |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
<!-- map.wxml -->
<map id="myMap" show-location />
<button type="primary" bindtap="getCenterLocation">获取位置</button>
<button type="primary" bindtap="moveToLocation">移动位置</button>
<button type="primary" bindtap="translateMarker">移动标注</button>
<button type="primary" bindtap="includePoints">缩放视野展示所有经纬度</button>
// map.js
Page({
onReady: function (e) {
// 使用 wx.createMapContext 获取 map 上下文
this.mapCtx = wx.createMapContext('myMap')
},
getCenterLocation: function () {
this.mapCtx.getCenterLocation({
success: function(res){
console.log(res.longitude)
console.log(res.latitude)
}
})
},
moveToLocation: function () {
this.mapCtx.moveToLocation()
},
translateMarker: function() {
this.mapCtx.translateMarker({
markerId: 0,
autoRotate: true,
duration: 1000,
destination: {
latitude:23.10229,
longitude:113.3345211,
},
animationEnd() {
console.log('animation end')
}
})
},
includePoints: function() {
this.mapCtx.includePoints({
padding: [10],
points: [{
latitude:23.10229,
longitude:113.3345211,
}, {
latitude:23.00229,
longitude:113.3345211,
}]
})
}
})