为什么在GoogleMap.InfoWindowAdapter标记列表中无法正常工作?

时间:2016-07-23 18:13:25

标签: android google-maps google-maps-markers

我正在研究Google地图上的自定义标记,但我只有一个疑问,为什么标记细节列表不会出现在GoogleMap.InfoWindowAdapter中,因为当我在默认标记上显示数据时,所有数据都显示完美。< / p>

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

但是当我在那时使用自定义标记时,如果你点击任何标记,那么它将显示数组的最后一个索引值。

如果您有任何解决方案,请通过我的帖子告诉我。

1 个答案:

答案 0 :(得分:0)

您多次致电setInfoWindowAdapter()。你只需要调用一次。

同样,您多次呼叫setOnInfoWindowClickListener()。你只需要调用一次。

将这些调用移出循环。使用传递到MarkergetInfoContents()的{​​{1}}对象来确定您需要在这些方法中执行的操作。 This sample app使用onInfoWindowClick() ID键入的getInfoContents()演示如何使用HashMap中的模型对象。