<think>根据用户当前需求,需要提供用于记录行动轨迹的微信小程序的`app.json`文件内容。结合引用内容中提到的轨迹记录功能[^2]和运动数据记录[^3],我们将重点配置与位置追踪相关的权限和功能。以下是针对行动轨迹记录场景优化的`app.json`配置:</think># 记录行动轨迹的微信小程序 `app.json` 配置
以下是为记录行动轨迹功能设计的完整 `app.json` 配置文件,特别针对位置追踪、轨迹记录和运动数据采集进行了优化:
```json
{
// 1. 页面路径配置(必需)
"pages": [
"pages/track/home", // 轨迹记录首页
"pages/track/recording", // 轨迹记录中页面
"pages/track/history", // 历史轨迹列表
"pages/track/detail", // 轨迹详情页
"pages/profile/settings", // 设置页面
"pages/profile/about" // 关于页面
],
// 2. 全局窗口表现配置
"window": {
"navigationBarBackgroundColor": "#1aad19", // 绿色主题
"navigationBarTextStyle": "white", // 白色文字
"navigationBarTitleText": "运动轨迹记录", // 应用名称
"backgroundColor": "#f8f8f8", // 页面背景色
"backgroundTextStyle": "dark", // 下拉刷新样式
"enablePullDownRefresh": true, // 启用下拉刷新
"onReachBottomDistance": 50 // 触底加载距离
},
// 3. 底部 tabBar 配置
"tabBar": {
"color": "#999",
"selectedColor": "#1aad19", // 主题绿色
"backgroundColor": "#ffffff",
"borderStyle": "black",
"list": [
{
"pagePath": "pages/track/home",
"text": "记录",
"iconPath": "/assets/icons/track.png",
"selectedIconPath": "/assets/icons/track-active.png"
},
{
"pagePath": "pages/track/history",
"text": "历史",
"iconPath": "/assets/icons/history.png",
"selectedIconPath": "/assets/icons/history-active.png"
},
{
"pagePath": "pages/profile/settings",
"text": "设置",
"iconPath": "/assets/icons/settings.png",
"selectedIconPath": "/assets/icons/settings-active.png"
}
]
},
// 4. 网络超时配置
"networkTimeout": {
"request": 15000, // 位置数据上传需要更长时间
"uploadFile": 20000 // 轨迹文件上传超时时间
},
// 5. 位置权限配置(关键配置)
"permission": {
"scope.userLocation": {
"desc": "需要获取您的位置信息以记录运动轨迹" // 位置权限说明[^2]
},
"scope.userLocationBackground": {
"desc": "需要后台位置权限以持续记录运动轨迹" // 后台位置权限[^2]
}
},
// 6. 后台运行能力声明
"requiredBackgroundModes": ["location"], // 声明后台位置能力[^2]
// 7. 分包配置(优化加载速度)
"subPackages": [
{
"root": "packageAnalysis",
"pages": [
"pages/analysis/stats", // 运动数据分析页
"pages/analysis/charts" // 轨迹图表分析页
]
}
],
// 8. 预下载规则
"preloadRule": {
"pages/track/home": {
"network": "all",
"packages": ["packageAnalysis"] // 进入首页预载分析模块
}
},
// 9. 全局自定义组件
"usingComponents": {
"track-map": "/components/track-map/track-map", // 轨迹地图组件
"distance-badge": "/components/distance-badge/distance-badge" // 距离徽章组件
},
// 10. 使用云开发能力(用于轨迹存储)
"useExtendedLib": {
"weui": true // 使用WeUI组件库
},
// 11. 主题配置
"themeLocation": "theme.json",
// 12. 启用新版样式
"style": "v2",
// 13. 设置入口页面
"entryPagePath": "pages/track/home",
// 14. 配置sitemap
"sitemapLocation": "sitemap.json"
}
```
## 关键配置说明
### 1. 轨迹记录核心页面
```json
"pages": [
"pages/track/home", // 开始记录页面
"pages/track/recording", // 记录中页面(实时显示轨迹)
"pages/track/history", // 历史记录列表
"pages/track/detail" // 单条轨迹详情(含地图展示)
]
```
这些页面构成了轨迹记录的核心功能流[^2]。
### 2. 位置权限配置(核心)
```json
"permission": {
"scope.userLocation": {
"desc": "需要获取您的位置信息以记录运动轨迹"
},
"scope.userLocationBackground": {
"desc": "需要后台位置权限以持续记录运动轨迹"
}
},
"requiredBackgroundModes": ["location"]
```
这些配置是后台持续记录轨迹的关键[^2],必须包含清晰的位置使用说明。
### 3. 轨迹地图组件
```json
"usingComponents": {
"track-map": "/components/track-map/track-map"
}
```
专用地图组件用于绘制和展示运动轨迹[^2]。
### 4. 后台位置支持
```json
"requiredBackgroundModes": ["location"] // 声明后台位置能力
```
此配置允许小程序在后台持续获取位置信息,对于长时间轨迹记录至关重要[^2]。
### 5. 运动数据分析分包
```json
"subPackages": [
{
"root": "packageAnalysis",
"pages": [
"pages/analysis/stats", // 运动数据分析
"pages/analysis/charts" // 轨迹可视化
]
}
]
```
分包加载优化性能,分离数据分析功能[^3]。
## 项目结构建议
```
miniprogram/
├── app.js
├── app.json # 此配置文件
├── project.config.json
├── sitemap.json
├── theme.json
├── assets/ # 资源目录
│ ├── icons/ # TabBar图标
│ └── markers/ # 地图标记图标
├── components/ # 自定义组件
│ ├── track-map/ # 轨迹地图组件
│ ├── distance-badge/ # 距离显示组件
│ └── speed-gauge/ # 速度仪表盘
├── pages/
│ └── track/ # 轨迹记录相关页面
│ ├── home/ # 开始记录页
│ ├── recording/ # 记录中页
│ ├── history/ # 历史记录列表
│ └── detail/ # 单条轨迹详情
└── packageAnalysis/ # 数据分析分包
└── pages/
├── stats/ # 运动统计
└── charts/ # 轨迹图表
```
## 功能实现建议
1. **位置获取**:使用 `wx.getLocation` 和 `wx.startLocationUpdateBackground` API 实现后台位置追踪[^2]
2. **轨迹绘制**:利用 `map` 组件的 `polyline` 属性绘制运动路径
3. **数据存储**:使用云开发数据库存储轨迹数据
4. **运动指标**:计算距离、速度、卡路里等运动指标[^3]
5. **后台持续记录**:确保在屏幕关闭后仍能记录位置[^2]
> **提示**:在实现后台位置记录时,务必在 `app.js` 中监听 `onLocationChange` 事件并处理位置数据[^2]。