public void marker1(final List<String> listName,
final List<String> listIllness, final List<String> listIC,
final List<String> listElderlyimage, List<String> listArduinomac,
List<String> listLat, List<String> listLong) {
Log.e("", Integer.toString(listName.size()));
for (int i = 0; i < listName.size(); i++) {
name = listName.get(i);
ic = listIC.get(i);
illness = listIllness.get(i);
Double Lat = Double.parseDouble(listLat.get(i));
Double Long = Double.parseDouble(listLong.get(i));
MarkerOptions marker = new MarkerOptions().position(new LatLng(Lat,
Long));
marker.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET));
infoWindowAdapter = new MarkerInfoWindowAdapter();
googleMap.setInfoWindowAdapter(infoWindowAdapter);
infoWindowAdapter.setName(name);
infoWindowAdapter.setIC(ic);
infoWindowAdapter.setIllness(illness);
googleMap.addMarker(marker);
}// for loop
}// marker1
这是我使用的自定义infowindowadapter
class MarkerInfoWindowAdapter implements InfoWindowAdapter {
private View inflatedView;
private String name, ic, illness;
public void setName(String name) {
this.name = name;
}
public void setIC(String ic) {
this.ic = ic;
}
public void setIllness(String illness) {
this.illness = illness;
}
MarkerInfoWindowAdapter() {
inflatedView = getActivity().getLayoutInflater().inflate(
R.layout.custom_info_contents, null);
}
@Override
public View getInfoContents(Marker marker) {
setInfo(marker, inflatedView);
return inflatedView;
}
@Override
public View getInfoWindow(Marker marker) {
setInfo(marker, inflatedView);
return inflatedView;
}
private void setInfo(Marker marker, View view) {
TextView txtname = (TextView) view
.findViewById(R.id.txtPatientName);
TextView txtIC = (TextView) view.findViewById(R.id.txtIC);
TextView txtIllness = (TextView) view.findViewById(R.id.txtIllness);
txtname.setText(name);
txtIC.setText(ic);
txtIllness.setText(illness);
Log.e("<>", txtname.toString());
}
}
您好,我不确定为什么每当我点击标记时,它都会继续显示相同的人物信息。我不确定哪里出了问题。请帮我!谢谢。
答案 0 :(得分:1)
它不断显示相同的人物信息
这是因为MarkerInfoWindowAdapter
中只有一个“人员信息”,而您忽略了传递给Marker
的{{1}}。如果您想根据getInfoWindow()
填充信息窗口,则需要查找与该Marker
相关联的信息。 This sample application显示了根据Marker
ID查找模型数据。
另外,请勿同时实施Marker
和getInfoWindow()
。只有一个会被使用 - getInfoContents()
如果它返回非getInfoWindow()
值,则为null
。在这种情况下,由于您总是从getInfoContents()
返回非null
值,因此永远不会调用getInfoWindow()
。
另外,请勿为每个getInfoContents()
创建InfoWindowAdapter
。只使用了一个Marker
。在您的情况下,它将是您创建的最后一个。