2016-07-23 9 views
-1

私はGoogleマップのカスタムマーカーで作業していますが、その時点ですべてのデータが完全に表示されているので、マーカーの詳細のリストがGoogleMap.InfoWindowAdapter内に表示されない理由は1つのみです。内部のGoogleMap.InfoWindowAdapterマーカーのリストが機能しないのはなぜですか?

for (int i = 0; i < mStringLocation.getMerchants().size(); i++) { 

    double latitude = mStringLocation.getMerchants().get(i).getLocation().getLatitude(); 
    double longitude = mStringLocation.getMerchants().get(i).getLocation().getLongitude(); 

    final String name = mStringLocation.getMerchants().get(i).getName(); 

    LatLng latLng1 = new LatLng(latitude, longitude); 

    MarkerOptions markerOptions = new MarkerOptions(); 
    markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_icon)); 
    markerOptions.position(latLng1); 
    //markerOptions.title(name); 
    map.addMarker(markerOptions); 

    map.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.map_marker_layout, null); 

      mNameTxt = (TextView) view.findViewById(R.id.name_txt); 

      Toast.makeText(getActivity(), "" + name, Toast.LENGTH_SHORT).show(); 

      mNameTxt.setText(name); 

      return view; 
     } 
    }); 

    map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
    @Override 
    public void onInfoWindowClick(Marker marker) { 
     Toast.makeText(getActivity(), "" + name, Toast.LENGTH_SHORT).show(); 
    } 
    }); 
} 

しかし、私はその時点でそれをカスタムマーカーを使用していますが、マーカーのいずれかをタップすると、それは、配列の最後のインデックス値を表示します。

親切にも私の投稿を見て、解決策があれば教えてください。

+0

質問に「マーカーのいずれかをタップした場合、配列の最後のインデックス値が表示される」というコードはありません。 – CommonsWare

+0

ちょっとお礼ありがとうございます。何かをタップすると詳細が表示されますが、GoogleMap.InfoWindowAdapterの中で何かをタップすると最後の値が表示されます –

+0

質問を編集し、「マーカーのいずれかをタップすると配列の最後のインデックス値が表示されます」というコードを入力すると役立ちます。私はあなたの 'OnInfoWindowClickListener'の' onInfoWindowClick() 'メソッドであると思います。 [this activity](https://github.com/commonsguy/cw-omnibus/blob/master/MapsV2/Popups/app/src/main/java/com/commonsware)の 'onInfoWindowClick()'メソッドの例を見ることができます。 /android/mapsv2/popups/MainActivity.java)を[this sample app](https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/Popups)から削除します。 – CommonsWare

答えて

0

あなたはsetInfoWindowAdapter()を何回か呼び出しています。あなたはそれをただ一度呼び出す必要があります。

同様に、setOnInfoWindowClickListener()を何回か呼び出しています。あなたはそれをただ一度呼び出す必要があります。

これらの呼び出しをループ外に移動します。 とonInfoWindowClick()に渡されたMarkerオブジェクトを使用して、それらのメソッドで行う必要のある作業を特定します。 This sample appMarkerのIDでキーが付けられたHashMapを使用してgetInfoContents()のモデルオブジェクトを使用する方法を示します。

関連する問題