【问题标题】:Unable to get GoogleMap OnMarkerClickListener to work无法让 GoogleMap OnMarkerClickListener 工作
【发布时间】:2013-04-07 08:03:27
【问题描述】:

使用 V2 地图。

基本上一切正常,包括添加标记。

但是,我需要在点击标记时采取行动,所以我安装了一个处理程序:

thisMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

    @Override public boolean onMarkerClick(Marker marker) {
        //  Take some action here
        return true;
    }

}
);

唯一的问题是 - onMarkerClick() 根本不会被调用。看不到原因 - 在最初创建地图时尝试创建侦听器,并且在放置标记后也尝试创建侦听器,没有区别。

?

【问题讨论】:

    标签: android google-maps google-maps-markers


    【解决方案1】:

    这对我来说很好用:

    GoogleMap mMap;
    Marker marker_1;
    

    初始化地图后,给它添加一个监听器。

    mMap.setOnMarkerClickListener((OnMarkerClickListener) this);
    

    并称之为

    /**
     * handle marker click event
     */    
    @Override
    public boolean onMarkerClick(Marker marker) {
        // TODO Auto-generated method stub
        if(marker.equals(marker_1)){
            Log.w("Click", "test");
            return true;
        }
            return false;           
    }
    

    如果它返回“true”,则单击事件正在被正确处理。如果单击标记并返回false,它将像往常一样弹出信息窗口。

    根据 Android 文档,如果侦听器已消费事件,则单击的标记返回 true (即不应发生默认行为), 否则为假 (即,应该发生默认行为)。 默认行为是相机移动到地图和 信息窗口出现。

    【讨论】:

      【解决方案2】:

      你可以简单地使用这个片段:

      import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
      
      GoogleMap mGoogleMap;
      Marker marker_1;
      

      在 onMapReady(GoogleMap googleMap) 中添加:

      mGoogleMap.setOnMarkerClickListener(new OnMarkerClickListener() {
              @Override
              public boolean onMarkerClick(Marker marker) {
      
                  // TODO Auto-generated method stub
                  if(marker.equals(marker_1)){
                      Log.w("Click", "test");
                      return true;
                  }
                  return false;
      
              }
          });
      

      【讨论】:

        【解决方案3】:

        设法通过使用 OnInfoWindowClickListener 来使其工作。不知道为什么它不会响应标记点击。

        【讨论】:

          【解决方案4】:

          谷歌地图mMap;

          使用这个:

          mMap.setOnMarkerClickListener((OnMarkerClickListener) this);

          而不是 mMap.setOnMarkerClickListener(OnMarkerClickListener);

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-23
            • 2014-12-26
            • 2017-12-22
            • 2012-02-28
            • 2015-12-01
            • 2012-01-29
            相关资源
            最近更新 更多