2016-07-13 1 views
0

Momentan arbeite ich an Google Map, aber wenn ich Klick-Listener an den Marker gebe, löst das Event nicht aus.Warum funktioniert der Ereignis-Listener bei Google-Kartenmarkierungen in Android nicht?

@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; 
     } 
    }); 
} 

Bitte gehen Sie meinen Code durch und schlagen Sie mir eine Lösung vor.

+0

Ist es versuchen, dass der 'Toast' nicht angezeigt wird? – SlashG

+0

hey danke, kein Toast zeigt nicht – animation123

+0

Ich bin mir nicht sicher, aber Sie könnten zuerst 'setClickable (true)' auf Ihrem 'mNameLayout' zuerst versuchen. – SlashG

Antwort

1

onMapReady Stellen Sie onClick listner wie folgt ein.

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; 
     } 
    }); 
2

Von Ihrem obigen Code werden Sie das Kartenlayout in getInfoWindow() aufblasen und das Klickereignis auf dem Layout nicht auf dem Marker setzen.

, wenn Sie auf Ihrer Karte klicken möchten, benötigen Sie this-

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

       } 
      }); 
} 

, um zu versuchen, und wenn Sie auf Ihre Markierung auf der Karte klicken möchten, dann müssen Sie this-

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