为什么事件监听器无法在Android中使用Google地图标记?

时间:2016-07-13 05:45:21

标签: android google-maps

目前我在谷歌地图上工作但是当我给标记点击监听器时,事件没有触发。

@Override
public void onMapReady(GoogleMap googleMap) {
        googleMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
        @Override
        public View getInfoWindow(Marker marker) {

            View view = getActivity().getLayoutInflater().inflate(R.layout.map_marker_layout, null);

            mNameLayout = (RelativeLayout) view.findViewById(R.id.map_name_layout);

            mNameLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show();
                }
            });

            return view;
        }

        @Override
        public View getInfoContents(Marker marker) {
            return null;
        }
    });
}

请仔细阅读我的代码,并向我提出一些解决方案。

2 个答案:

答案 0 :(得分:2)

onMapReady像这样设置onClick listner。

  googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
        @Override
        public void onInfoWindowClick(Marker marker) {
       Toast.makeText(getActivity(), "Infowindow clicked", Toast.LENGTH_SHORT).show();
        }
    });
    googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
           Toast.makeText(getActivity(), "Marker Clicked", Toast.LENGTH_SHORT).show();
            return false;
        }
    });

答案 1 :(得分:1)

从上面的代码中你将地图布局膨胀到getInfoWindow()并在布局上设置click事件而不是标记。

如果您想点击地图,则需要尝试此操作 -

@Override
public void onMapReady(GoogleMap googleMap) {
        googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
                @Override
                public void onMapClick(LatLng latLng) {

                }
            });
}

如果您想点击地图标记,那么您需要尝试这个 -

@Override
public void onMapReady(GoogleMap googleMap) {
    googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                        @Override
                        public boolean onMarkerClick(Marker marker) {
                            return true;
                        }
                    });
}