再次单击Titanium map Annotation不起作用

时间:2016-06-18 14:05:05

标签: ios google-maps annotations titanium

我的钛地图上有一些注释。

当我单击注释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事件。

1 个答案:

答案 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上启用的引脚,以停止渲染过多的引脚,只渲染我需要的内容而不是所有的注释。