uni-app map组件的markers拓展问题
uni-app map组件的markers拓展问题
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 10.14.6 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
PC开发环境操作系统版本号:10.14.6
HBuilderX类型:正式
HBuilderX版本号:3.1.4
手机系统:全部
手机厂商:华为
页面类型:nvue
打包方式:云端
测试过的手机:全部
操作步骤:
1
预期结果:
支持字符串,或可增加字段
实际结果:
只支持数字
bug描述:
map组件的的markers,标记点id属性,只能填入数字,并且还有个数现在,现在严重影响了uniCloud的_id绑定,markers标记点id属性不支持字符串,只支持数字,造成很大困扰,能否id支持下字符串?
更多关于uni-app map组件的markers拓展问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app map组件的markers拓展问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在uni-app的map组件中,markers的id字段确实仅支持数值类型,这是由底层原生地图SDK的限制决定的。不同平台(如高德、百度地图)对标记点ID的数据类型要求均为数值型,因此无法直接使用uniCloud的字符串型_id。
建议的解决方案:
- 建立映射关系:在数据层维护一个映射表,将字符串_id转换为数值型ID
- 数据预处理:在设置markers前,遍历数据并为每个标记点生成唯一的数值ID,同时保留原始_id作为自定义字段
- 事件处理:在marker点击事件中,通过数值ID反查对应的字符串_id
示例代码:
// 数据转换
const markers = originalData.map((item, index) => ({
id: index, // 数值型ID
customId: item._id, // 保留原始字符串ID
latitude: item.latitude,
longitude: item.longitude,
// ...其他属性
}))
// 事件处理
onMarkerTap(e) {
const markerId = e.markerId
const originalId = markers.find(m => m.id === markerId)?.customId
// 使用originalId进行后续操作
}