2016-07-13 16 views
0

現在私はGoogleマップで作業していますが、マーカーにクリックリスナーを与えているときにイベントが発生していません。AndroidのGoogleマップマーカーでイベントリスナーが動作しないのはなぜですか?

@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

をしようとする必要があるがそれですトーストは表示されていませんか? – SlashG

+0

ねえ、ありがとう、いいえ、トーストが表示されていません – animation123

+0

私はこれについてはあまりよく分かりませんが、まずあなたの 'mNameLayout'に' setClickable(true) 'を使ってみてください。 – SlashG

答えて

1

onMapReadyこのようにonClickリストを設定します。

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

上記のコードから、マップレイアウトをgetInfoWindow()に展開し、マーカーではなくレイアウトにclickイベントを設定しています。

あなたは地図をクリックしたい場合はthis-

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

       } 
      }); 
} 

を試してみる必要があると、あなたのマップのマーカーをクリックした場合、あなたはthis-

@Override 
public void onMapReady(GoogleMap googleMap) { 
    googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
         @Override 
         public boolean onMarkerClick(Marker marker) { 
          return true; 
         } 
        }); 
} 
関連する問題