我正在研究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();
}
});
}
但是当我在那时使用自定义标记时,如果你点击任何标记,那么它将显示数组的最后一个索引值。
如果您有任何解决方案,请通过我的帖子告诉我。
答案 0 :(得分:0)
您多次致电setInfoWindowAdapter()
。你只需要调用一次。
同样,您多次呼叫setOnInfoWindowClickListener()
。你只需要调用一次。
将这些调用移出循环。使用传递到Marker
和getInfoContents()
的{{1}}对象来确定您需要在这些方法中执行的操作。 This sample app使用onInfoWindowClick()
ID键入的getInfoContents()
演示如何使用HashMap
中的模型对象。