android - 未调用 getInfoContents()

标签 android google-maps infowindow

我正在尝试在 Google map 上显示两种类型的信息窗口。当我单击标记时,会调用自定义信息窗口,但是当我单击 map 时,不会显示另一个自定义信息窗口。而且我得到了日志,我发现 getInfoContents 没有在 setOnMapClickListener 中调用。但 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;
            }
        });

最佳答案

我遇到了同样的问题,我忘记让 Activity 知道回调。 尝试添加这个:

mMap.setInfoWindowAdapter(this);

关于android - 未调用 getInfoContents(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27538149/

相关文章:

javascript - 将 Jquery 谷歌地图更改为 angularJS

javascript - 删除信息窗口的右边距和底部边距

android - 适用于 Android 的 GoogleSignInApi 和 PLUS API 之间的区别

java - 如何上传带有 Google Drive REST API v2 链接的文件

android - 如何在安装应用程序时和打开应用程序之前获取用户详细信息?

android - 如何在 Kotlin 中创建异步 post 请求?

google-maps - 谷歌地图标记仅在 iPhone/iPad 上在特定缩放级别消失

javascript - 更改 google-maps-react 上选定多边形的颜色

google-maps - Google map v3 的 InfoWindow 替代品

javascript - Google map 信息窗口显示在错误的 map 上