自定义InfoWindowAdapter不是从onMarkerClick()调用

时间:2013-11-05 09:37:57

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

当用户点击制造商时,我设置CustomInfoWindow来调用。创建Map时我不会调用它,但只有在用户点击Marker时才会调用。

我有不同的叠加层,它们具有不同的infoWindows实现 Overlay类构建infoWindow,如下所示。

public  void onTap(AndroidMapOverlayItem item) {

  String overlayType = "";

  googleMap.setInfoWindowAdapter(new InfoWindowAdapter() {

 /*
  * some code to find overlayType
  */

        @Override
        public View getInfoWindow(Marker marker) {

            return null;
        }

        @Override
        public View getInfoContents(Marker marker) {

            if ("mylocation".equalsIgnoreCase(overlayType)) {


                // set title
                ((TextView)infoWindow.findViewById(R.id.title)).setText("Title");

                // set distance
                ((TextView)infoWindow.findViewById(R.id.text)).setText(display);

            }
            return infoWindow;

        }
    });
 }

下面是我的活动类,它选择用户点击并找到哪个标记。根据标记我称之为相关的覆盖类。该覆盖类具有在infowindow中显示的信息。 活动类。

googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.setOnMarkerClickListener(this);        

@Override
public boolean onMarkerClick(final Marker marker) {
    Log.d(TAG,"Inside onMakerClick "+marker);


    /*
             * find the relevant overlay class and try to fire it's onTap event.
             * onTap event has what needs to be done with specific marker.
             * Different marker has different information to show.
             *
             */
    overlay.onTap(overlayItem);


    return true;

}

这是我想要的,因为当我在第一个实例中设置CustomInfowindow时,所有标记都显示相同的信息。

1 个答案:

答案 0 :(得分:0)

我得到了修复。现在,当我点击每个标记时,我会看到不同的信息。

我在overlay.onTap(overlayItem)

中的onMarkerClick(final Marker marker)之后添加了以下代码
    if (!marker.isInfoWindowShown())
        marker.showInfoWindow();