291 lines
10 KiB
Markdown
291 lines
10 KiB
Markdown
# 地图组件配置检查指南
|
||
|
||
## 检查结果
|
||
|
||
从数据库和日志检查发现,DEMO 仪表盘中有一个地图组件配置,存在以下**配置错误**:
|
||
|
||
### 1. 位置数据类型配置错误 ⚠️ **关键问题**
|
||
|
||
**问题描述:**
|
||
- 地图配置中,X轴(纬度)和Y轴(经度)都设置为 `"type": "attribute"`(属性类型)
|
||
- X轴键名:`drone.latitude`
|
||
- Y轴键名:`drone.longitude`
|
||
|
||
**实际数据情况(从日志确认):**
|
||
- 设备发送的位置数据是**遥测数据**(timeseries),不是属性
|
||
- 日志中可以看到:`"drone.longitude":112.96570521660297,"drone.latitude":25.70685363466869`
|
||
- 这些数据在遥测数据中,不在属性中
|
||
|
||
**问题原因:**
|
||
- 地图配置查找的是**属性**(attribute),但设备数据在**遥测**(timeseries)中
|
||
- 导致地图无法获取位置信息,设备无法显示在地图上
|
||
|
||
**地图组件支持的数据类型:**
|
||
- ✅ **timeseries**(遥测数据)- 支持
|
||
- ✅ **attribute**(属性)- 支持
|
||
- ✅ **function**(函数)- 支持
|
||
|
||
**结论:** 地图**不是只能用 attribute**,可以修改为 timeseries!
|
||
|
||
### 2. 默认中心位置配置
|
||
|
||
**当前配置:**
|
||
- `"defaultCenterPosition": "0,0"` - 这是赤道和本初子午线的交点(大西洋中部)
|
||
- `"useDefaultCenterPosition": false` - 已禁用,会尝试根据数据自动调整
|
||
|
||
**建议:**
|
||
- 如果设备位置数据存在,地图应该会自动调整到设备位置
|
||
- 如果看不到设备,可能是位置数据不存在或数据类型不匹配
|
||
|
||
### 3. 数据源配置
|
||
|
||
**当前配置:**
|
||
- `"dsType": "device"` - 直接关联到单个设备
|
||
- `"dsDeviceId": "fc1be8f0-b95d-11f0-8c0a-afd4d00ac98a"` - 设备ID:7CTDM7H00B5EM1
|
||
|
||
## 修复建议
|
||
|
||
### 方案1:检查数据实际类型
|
||
|
||
**在 ThingsBoard Web UI 中:**
|
||
|
||
1. 进入设备详情页:`7CTDM7H00B5EM1`
|
||
2. 查看 **Latest Telemetry** 标签页
|
||
3. 检查是否有 `drone.latitude` 和 `drone.longitude` 数据
|
||
4. 查看 **Attributes** 标签页
|
||
5. 检查是否有 `drone.latitude` 和 `drone.longitude` 属性
|
||
|
||
**根据实际情况:**
|
||
- 如果数据在 **Telemetry** 中 → 将地图配置中的 `type` 改为 `"timeseries"`
|
||
- 如果数据在 **Attributes** 中 → 保持 `type` 为 `"attribute"`
|
||
|
||
### 方案2:在 Web UI 中修正地图配置(推荐)
|
||
|
||
**确认:位置数据是遥测数据,需要在 Web UI 中修改配置**
|
||
|
||
**重要说明:**
|
||
1. 地图组件有 **Basic Mode** 和 **Advanced Mode** 两种配置模式
|
||
2. 在 **Basic Mode** 下可能无法直接配置数据键类型
|
||
3. 需要先切换到 **Advanced Mode**,然后才能配置标记点的数据键
|
||
|
||
**操作步骤:**
|
||
|
||
#### 步骤1:切换到 Advanced Mode
|
||
|
||
1. **打开地图组件配置:**
|
||
- 在 DEMO 仪表盘中,点击地图组件
|
||
- 点击编辑按钮(或右键 → 编辑)
|
||
|
||
2. **切换到 Advanced Mode:**
|
||
- 在配置面板**顶部**找到切换按钮
|
||
- 应该显示 **"Basic Mode"** 和 **"Advanced Mode"** 两个选项
|
||
- 点击 **"Advanced Mode"** 切换到高级模式
|
||
|
||
#### 步骤2:配置 Markers 数据键
|
||
|
||
3. **进入 Markers 配置:**
|
||
- 在 Advanced Mode 的配置面板中,找到 **"Overlays"**(覆盖层)部分
|
||
- 应该可以看到 **Markers**、**Polygons**、**Circles** 等选项
|
||
- 点击 **"Markers"** 标签
|
||
|
||
4. **编辑标记点配置:**
|
||
- 找到标记点列表(应该有一个标记点)
|
||
- 点击标记点右侧的**编辑按钮**(或点击标记点本身)
|
||
- 这会打开标记点配置对话框
|
||
|
||
5. **修改 Latitude(纬度)配置:**
|
||
- 在标记点配置对话框中,找到 **Latitude** 字段(显示 `drone.latitude`)
|
||
- 点击字段右侧的 **"×"** 按钮,删除当前数据键
|
||
- 在输入框中输入:`drone.latitude`
|
||
- 系统会自动显示下拉列表,选择带有 **timeline 图标**(📈)的选项(表示 timeseries)
|
||
- **不要选择带 "A" 图标**(表示 attribute)的选项
|
||
|
||
6. **修改 Longitude(经度)配置:**
|
||
- 找到 **Longitude** 字段(显示 `drone.longitude`)
|
||
- 点击字段右侧的 **"×"** 按钮,删除当前数据键
|
||
- 在输入框中输入:`drone.longitude`
|
||
- 系统会自动显示下拉列表,选择带有 **timeline 图标**(📈)的选项(表示 timeseries)
|
||
- **不要选择带 "A" 图标**(表示 attribute)的选项
|
||
|
||
7. **保存配置:**
|
||
- 点击标记点配置对话框底部的 **"应用"** 或 **"保存"** 按钮
|
||
- 点击地图组件配置面板底部的 **"应用"** 按钮
|
||
- 刷新仪表盘查看效果
|
||
|
||
**如果找不到切换按钮:**
|
||
- 检查配置面板顶部是否有 "Basic Mode" / "Advanced Mode" 切换开关
|
||
- 如果看不到切换按钮,可能是当前已经在 Advanced Mode 了
|
||
- 直接进入步骤2,在配置面板中查找 Markers 配置部分
|
||
|
||
**图标识别:**
|
||
- 📈 **timeline 图标** = Timeseries(遥测数据)- ✅ 选择这个
|
||
- 🔵 **"A" 图标** = Attribute(属性)- ❌ 不要选这个
|
||
|
||
**配置位置图示:**
|
||
```
|
||
地图组件配置
|
||
├── Markers
|
||
│ └── [标记点配置] → 点击编辑
|
||
│ ├── Latitude 字段
|
||
│ │ ├── 删除当前值(点击 ×)
|
||
│ │ ├── 输入: drone.latitude
|
||
│ │ └── 选择 📈 图标(Timeseries)← 重要!
|
||
│ └── Longitude 字段
|
||
│ ├── 删除当前值(点击 ×)
|
||
│ ├── 输入: drone.longitude
|
||
│ └── 选择 📈 图标(Timeseries)← 重要!
|
||
```
|
||
|
||
### 方案3:设置合适的默认中心位置
|
||
|
||
**如果设备位置在中国:**
|
||
|
||
1. 在地图配置中,设置:
|
||
- `"useDefaultCenterPosition": true`
|
||
- `"defaultCenterPosition": "35,110"` (中国中心位置,可根据实际情况调整)
|
||
- `"defaultZoomLevel": 6` (合适的缩放级别)
|
||
|
||
## 配置检查清单
|
||
|
||
### ✅ 已检查项
|
||
|
||
- [x] 地图类型:`geoMap`(地理地图)
|
||
- [x] 地图提供商:`openstreet`(OpenStreetMap)
|
||
- [x] 数据源类型:`device`(设备)
|
||
- [x] 设备ID已配置:`fc1be8f0-b95d-11f0-8c0a-afd4d00ac98a`
|
||
- [x] 标记点配置存在
|
||
- [x] 标签显示:`${entityName}` ✓
|
||
- [x] 工具提示已配置 ✓
|
||
|
||
### ✅ 已确认项
|
||
|
||
- [x] **位置数据是遥测数据**:从日志确认,数据在 timeseries 中
|
||
- [x] **位置数据键名**:`drone.latitude` 和 `drone.longitude` ✓
|
||
- [x] **位置数据存在**:设备正在发送位置数据 ✓
|
||
- [x] **配置错误**:地图配置为 `attribute`,但数据是 `timeseries` ⚠️
|
||
|
||
### ⚠️ 需要修复项
|
||
|
||
- [ ] **修改数据类型**:
|
||
1. 删除 Latitude 字段的当前数据键(点击 ×)
|
||
2. 重新输入 `drone.latitude`,选择带 📈 图标的选项(Timeseries)
|
||
3. 删除 Longitude 字段的当前数据键(点击 ×)
|
||
4. 重新输入 `drone.longitude`,选择带 📈 图标的选项(Timeseries)
|
||
5. 保存配置
|
||
|
||
## 常见问题
|
||
|
||
### Q1: 地图显示空白
|
||
|
||
**可能原因:**
|
||
1. 位置数据类型不匹配(配置为 attribute,但数据是 timeseries)
|
||
2. 位置数据键名不正确
|
||
3. 设备没有发送位置数据
|
||
|
||
**解决方法:**
|
||
1. 检查设备实际发送的数据(在设备详情页查看 Latest Telemetry)
|
||
2. 确认键名和类型
|
||
3. 在地图配置中删除并重新选择数据键,确保选择 timeseries 类型(📈 图标)
|
||
|
||
### Q1.1: 找不到配置的地方 / 找不到类型选择下拉框
|
||
|
||
**问题:** 在地图配置中找不到配置 Latitude/Longitude 的地方,或者找不到类型选择下拉框
|
||
|
||
**可能原因:**
|
||
1. 当前在 **Basic Mode**,Basic Mode 可能不显示详细的数据键配置
|
||
2. 数据类型是在选择数据键时自动识别的,不是单独的下拉框配置
|
||
|
||
**解决方法:**
|
||
|
||
**方法1:切换到 Advanced Mode(推荐)**
|
||
1. 在配置面板顶部找到 **"Basic Mode" / "Advanced Mode"** 切换按钮
|
||
2. 切换到 **"Advanced Mode"**
|
||
3. 在 Advanced Mode 中,找到 **"Overlays"** 部分
|
||
4. 点击 **"Markers"** 标签
|
||
5. 编辑标记点,修改 Latitude 和 Longitude 数据键
|
||
|
||
**方法2:如果仍找不到配置**
|
||
1. 确认是否在编辑模式下(点击了地图组件的编辑按钮)
|
||
2. 检查配置面板是否完全展开
|
||
3. 尝试滚动配置面板,查看是否有更多配置选项
|
||
4. 如果确实找不到,可能需要检查 ThingsBoard 版本是否支持此功能
|
||
|
||
**关于类型选择:**
|
||
- 数据类型**不是单独的下拉框**,而是在输入数据键名时自动识别的
|
||
- 删除当前数据键,重新输入键名
|
||
- 在下拉列表中选择正确的类型:
|
||
- 📈 timeline 图标 = Timeseries(遥测数据)- ✅ 选择这个
|
||
- 🔵 "A" 图标 = Attribute(属性)- ❌ 不要选这个
|
||
- 系统会根据设备实际数据自动识别,如果设备有该键的遥测数据,会显示 timeseries 选项
|
||
|
||
### Q2: 地图显示但设备位置不对
|
||
|
||
**可能原因:**
|
||
1. 经纬度数据顺序错误(纬度/经度搞反)
|
||
2. 数据单位问题(度 vs 弧度)
|
||
3. 数据格式问题
|
||
|
||
**解决方法:**
|
||
1. 检查实际数据的经纬度值
|
||
2. 确认数据格式正确
|
||
3. 可能需要调整坐标转换
|
||
|
||
### Q3: 地图显示默认位置(0,0)
|
||
|
||
**可能原因:**
|
||
1. 设备没有位置数据
|
||
2. 位置数据类型配置错误
|
||
3. 位置数据键名不匹配
|
||
|
||
**解决方法:**
|
||
1. 检查设备是否有位置数据
|
||
2. 确认配置中的键名和类型
|
||
3. 设置合适的默认中心位置
|
||
|
||
## 验证步骤
|
||
|
||
1. **检查设备数据:**
|
||
- 进入设备详情页
|
||
- 查看 Latest Telemetry 和 Attributes
|
||
- 确认位置数据的键名和类型
|
||
|
||
2. **检查地图配置:**
|
||
- 打开地图组件编辑
|
||
- 检查 Markers 配置
|
||
- 确认 X轴和Y轴的键名和类型
|
||
|
||
3. **测试地图:**
|
||
- 刷新仪表盘
|
||
- 查看地图是否显示设备位置
|
||
- 如果仍不显示,检查浏览器控制台错误信息
|
||
|
||
## 当前配置摘要
|
||
|
||
```json
|
||
{
|
||
"mapType": "geoMap",
|
||
"markers": [{
|
||
"dsType": "device",
|
||
"dsDeviceId": "fc1be8f0-b95d-11f0-8c0a-afd4d00ac98a",
|
||
"xKey": {
|
||
"name": "drone.latitude",
|
||
"type": "attribute" // ⚠️ 需要确认实际数据类型
|
||
},
|
||
"yKey": {
|
||
"name": "drone.longitude",
|
||
"type": "attribute" // ⚠️ 需要确认实际数据类型
|
||
}
|
||
}],
|
||
"useDefaultCenterPosition": false,
|
||
"defaultCenterPosition": "0,0",
|
||
"fitMapBounds": true // ✓ 会自动调整到设备位置
|
||
}
|
||
```
|
||
|
||
## 下一步操作
|
||
|
||
1. **在 Web UI 中检查设备数据**
|
||
2. **根据实际数据类型修正地图配置**
|
||
3. **如果数据不存在,检查设备是否正确发送位置数据**
|
||
|