2016-07-23 93 views
-1

我正在使用谷歌地图上的自定义标记,但我只有一个疑问,为什么列表中的标记细节不会进入GoogleMap.InfoWindowAdapter,因为当时我在默认标记上显示数据时所有数据都完美显示。为什么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()'方法。您可以在[本活动]中看到一个示例'onInfoWindowClick()'方法(https://github.com/commonsguy/cw-omnibus/blob/master/MapsV2/Popups/app/src/main/java/com/commonsware /android/mapsv2/popups/MainActivity.java)[https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/Popups]。 – CommonsWare

回答

0

您几次拨打setInfoWindowAdapter()。你只需要调用一次。

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

将这些呼叫转移到循环之外。使用传递到getInfoContents()onInfoWindowClick()Marker对象来确定您需要在这些方法中执行的操作。 This sample app演示如何使用来自getInfoContents()的模型对象,使用由Marker id键控的HashMap

相关问题