我的钛地图上有一些注释。
当我单击注释A时,它会显示一个视图。当我点击视图时,它会再次消失。
问题是当我再次尝试再次点击相同的注释以再次显示视图时。不会触发地图视图上的单击事件。它只有在我隐藏了注释A点击后显示的视图后点击其他注释时才有效。
这是我处理点击注释的方式。在第一次点击它被触发,第二次点击相同的注释时没有任何反应。
mapview.addEventListener('click', function(evt) {
console.log("clicked");
if (evt.clicksource == 'pin') {
viewTest.show();
viewData.show();
console.log("clicked, id: " + evt.annotation.id);
}
});
这就是我隐藏我在单击注释时添加的视图的方式:
viewTransparente.addEventListener('click', function() {
viewTest.hide();
viewData.hide();
});
在android中我的作品。唯一的问题是在IOS上。单击同一注释时不会触发click事件。
答案 0 :(得分:1)
当您点击名为“viewTransparente
”的视图时,您需要从注释中删除所选状态
如果您记录我在注释下面所做的所有属性,您可以看到当前没有任何属性显示为selected
:
[DEBUG] : horizontalWrap,
[DEBUG] : visible,
[DEBUG] : longitude,
[DEBUG] : id,
[DEBUG] : animate,
[DEBUG] : latitude,
[DEBUG] : image,
[DEBUG] : canShowCallout,
[DEBUG] : annotationTitle
解决此问题的方法是在单击视图时重置mapView上的注释,但这是一项非常昂贵的操作,具体取决于您选择的引脚数。
mapView.annotations = [yourAnnotations];
这将删除所有旧注释并将其替换为新注释,然后click事件将再次起作用,因为它将重置所选状态。
我已经实现了类似的功能,但是我已经在聚类中编码了mapView上启用的引脚,以停止渲染过多的引脚,只渲染我需要的内容而不是所有的注释。