在开发微信小程序时,控制台报“chooseLocation:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json”错误,意思要使用chooseLocation前需要在requiredprivateinfo中先声明。
一、声明接口
由于小程序地理位置很久未使用,查看文档了解到,自2022年7月14日起,开发者在使用地址位置相关接口时,需提前在app.json中进行配置。这里使用的是uni-app进行开发的项目,所以在manifest.json配置即可,代码如下:
/* 小程序特有相关 */
"mp-weixin" : {
// 略...
"usingComponents" : true,
"lazyCodeLoading" : "requiredComponents",
"optimization" : {
"subPackages" : true
},
"requiredPrivateInfos":["getLocation"],
"permission" : {
"scope.userLocation" : {
"desc" : "你的位置信息将用于小程序位置定位"
}
}
}
如上所示,当getLocation在requirePrivateInfos中定义后,代码中则可以使用wx.getLocation获取位置信息了。permission中配置"scope.userLocation"作用是获取用户授权,requirePrivateInfos是授权API接口。
二、地址位置的配置
地址位置需要配置的接口列表如下:
序号 | 说明 | 接口名称 | 授权scope |
---|---|---|---|
1 | 获取当前的模糊地理位置 | getFuzzyLocation | scope.userFuzzyLocation |
2 | 获取当前的地理位置、速度 | getLocation | scope.userLocation |
3 | 监听实时地理位置变化事件,需结合 wx.startLocationUpdateBackground、wx.startLocationUpdate使用 | onLocationChange | scope.userLocation |
4 | 开启小程序进入前台时接收位置消息 | startLocationUpdate | scope.userLocation |
5 | 开启小程序在前后台时均可接收位置消息,授权以后,小程序在运行中或进入后台均可接受位置消息变化。 | startLocationUpdateBackgroun | scope.userLocationBackground |
6 | 打开地图选择位置 | chooseLocation | / |
7 | 打开POI列表选择位置,支持模糊定位(精确到市)和精确定位混选 | choosePoi | / |
8 | 选择地址信息 | chooseAddress | / |
三、添加位置选择
当我们需要打开地图选择位置时,则要使用到wx.chooseLocation接口。在调用前则需要在manifest.json事先声明后,再调用。代码如下:
/* 小程序特有相关 */
"mp-weixin" : {
// 略...
"usingComponents" : true,
"lazyCodeLoading" : "requiredComponents",
"optimization" : {
"subPackages" : true
},
"requiredPrivateInfos":["getLocation", "chooseLocation"],
"permission" : {
"scope.userLocation" : {
"desc" : "你的位置信息将用于小程序位置定位"
}
}
}
如上配置表可见,使用wx.chooseLocation无须授权scope。当配置完后,执行wx.chooseLocation后,则可以打开下面的地图位置选择界面了。
如需更多的地址位置的使用,可去官网查看了解,如下图:
微信小程序开发文档地址:wx.getLocation(Object object) | 微信开放文档