不调用getInfoContents()

时间:2014-12-18 02:09:31

标签: android google-maps infowindow

我正在尝试在Google地图上显示两种类型的信息窗口。当我单击一个标记时,会调用自定义信息窗口,但是当我单击Map时,不会显示另一个自定义信息窗口。而且我得到了日志,我发现在setOnMapClickListener中没有调用getInfoContents。但是调用setOnMarkerListener中的getInfoContents。 ......为什么?

        mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng latLng) {
                mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
                    @Override
                    public View getInfoWindow(Marker marker) {
                        Log.v("a", "getInfoWindow");
                        return null;
                    }

                    @Override
                    public View getInfoContents(Marker marker) {
                        Log.v("a", "getInfoContents");
                        View view = getActivity().getLayoutInflater().inflate(R.layout.marker_default, null);
                        TextView title = (TextView) view.findViewById(R.id.default_infowindow);
                        title.setText(mCompany);
                        return view;
                    }
                });
            }
        });
        mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
                    @Override
                    public View getInfoWindow(Marker marker) {
                        return null;
                    }

                    @Override
                    public View getInfoContents(Marker marker) {
                        View view = getActivity().getLayoutInflater().inflate(R.layout.marker_window, null);
                        ImageView badge = (ImageView) view.findViewById(R.id.badge);
                        badge.setImageResource(R.drawable.ic_launcher);
                        TextView title = (TextView) view.findViewById(R.id.title);
                        TextView snippet = (TextView) view.findViewById(R.id.snippet);
                        title.setText(mCompany);
                        snippet.setText(mAddress);
                        return view;
                    }
                });
                return false;
            }
        });

2 个答案:

答案 0 :(得分:2)

我有同样的问题,我忘了让活动意识到回调。 尝试添加:

mMap.setInfoWindowAdapter(this);

答案 1 :(得分:1)

根据Google Maps reference,一次只能显示一个信息窗口。此外,在点击标记时会调用getInfoConents()方法。

如果要以编程方式显示信息窗口,则应调用showInfoWindow()方法。