目前我在谷歌地图上工作但是当我给标记点击监听器时,事件没有触发。
@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;
}
});
}
请仔细阅读我的代码,并向我提出一些解决方案。
答案 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;
}
});
}