TL;DR
如果想要 marker 可以响应 bindmarkertap 事件,需要设定 marker 的 ID,这一点文档中并没有标注。
具体情况
在开发美食地图时,出现了一个问题,marker 的点击总是不会触发 bindmarkertap 事件。
我的代码是这样写的
store.get().then(res => {
this.setData({
stores: res.data,
windowHeight: app.globalData.windowHeight,
}, () => {
wx.hideLoading();
wx.showToast({
title: '双指缩放可以调整地图可视区域,查看更多美食',
icon: 'none'
})
})
})
Code language: JavaScript (javascript)
在地图中去调用 stores. marker 。
在地图上的确可以出现图标,但是无法点击 maker 并触发事件。
通过复制官方的 marker 的数据进行调试后发现,当 maker 有 id 时,marker 就可以触发事件,因此,怀疑是 ID 的问题。
在美食地图小程序中,我使用的是腾讯云提供的小程序·云开发,其使用的是 MongoDB 作为后台的 Database ,默认的主键为 _id,所以,我自己写了代码来转换 _id。
data.map(item => {
item.id = item._id
});
Code language: JavaScript (javascript)