第二次点击标记不会调用OnMarkerClickListener函数

3

我在地图上添加了一个OnMarkerClickListener。 当我点击标记时,OnMarkerClickListener被调用并显示一个AlertDialog。 但是,如果我取消AlertDialog并第二次点击同一标记,则不会调用OnMarkerClickListener。这是我的OnMarkerClickListener:

googleMap.setOnMarkerClickListener(new OnMarkerClickListener() {

  @Override
  public boolean onMarkerClick(final Marker marker) {

    AlertDialog.Builder builder = new AlertDialog.Builder(
        DirectionsActivity.this);
    builder.setMessage(marker.getSnippet());
    builder.setTitle(marker.getTitle());
    builder.setPositiveButton("Open in Google Maps",
        new OnClickListener() {

          // ...
          }
        });

    builder.setNegativeButton("Cancel", null);

    AlertDialog dialog = builder.create();
    dialog.show();

    return false;
  }
});

仅仅是移动或缩放地图就可以在同一个标记上再次点击。因此,如果我的OnMarkerClickListener.onMarkerClick返回 true,则执行包括将地图居中于所点击的标记在内的默认处理,并且我可以在同一标记上进行第二次单击,但第三次及之后的单击则不会做出任何反应。因此,问题似乎在于在地图缩放或居中发生变化之前,不会识别对同一标记的单击操作。
我在标记方面没有做任何特殊处理,除了使用从位图派生的自定义图标。
还有其他人遇到这个问题吗?我应该检查一些可能存在的错误吗?或者这是一个已知的问题?

这个样例应用程序并没有展示这个问题:https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/Taps。可能是对话框干扰了相关事项。我建议暂时将其注释掉,使用一些不太侵入性的方法(如`Toast`、`Log`等)来测试是否有效。 - CommonsWare
好主意,谢谢你提供的示例项目。我尝试使用Toast而不是Alert,但仍然遇到了同样的问题。此外,我导入了你的Taps项目并运行它,我也能在那里复现同样的问题。只是为了澄清,在你的Taps应用程序中,我点击卡内基音乐厅标记,然后看到Toast。我等待Toast消失,然后第二次点击卡内基音乐厅,我再次看到Toast。但是第三次和随后的点击卡内基音乐厅没有任何效果。然而,我已经意识到我没有使用最新的google-play-services库,所以可能是这个问题。 - mchristie
你是否在两次点击之间关闭了信息窗口?如果我不停地点击已经打开的标记,我可以重现你的问题。这感觉像是Maps V2中的一个错误。 - CommonsWare
不,我只是在标记上轻点。第三次及以后的轻点不会调用OnMarkerClickListener。但是,如果我在每次标记轻点后“关闭”信息窗口(我通过在地图上其他位置轻点来实现这一点),那么对标记的轻点总是会被注册。所以看起来这是一个错误。我将向Google提交错误报告。谢谢Mark。 - mchristie
我已经为此提出了一个错误报告,并在描述中放置了这个线程:http://code.google.com/p/gmaps-api-issues/issues/detail?id=4829&thanks=4829&ts=1358789849请投票支持此问题。 - balazsbalazs
2个回答

2

0
在'onMarkerClick'方法中,将返回值设置为'true'。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接