我正在尝试创建我已为其制作布局文件的信息窗口的自定义视图。但我的数据(纬度和经度)是 ArrayList 的形式。
for (int i = 0; i < list.size(); i++) {
Log.e(getClass().getName(), list.get(i).getFirstName());
double x = list.get(i).getLocationLatLon().getLat();
double y = list.get(i).getLocationLatLon().getLon();
if (x > 90 || x < -90 || y < -180 || y > 180) {
Log.e(getClass().getName(),
"out of range " + Double.toString(x) + " "
+ Double.toString(y));
lng2 = new LatLng(lat, lng);
} else {
Log.e(getClass().getName(),
"In range " + Double.toString(x) + " "
+ Double.toString(y));
lng2 = new LatLng(x, y);
}
InfoClass infoClass= new InfoClass();
infoClass.setName(list.get(i).getFirstName()+" "+list.get(i).getLastName());
infoClass.setCharge(list.get(i).getCharge());
infoClass.setAvailableTime(list.get(i).getTimeAvailable());
infoClass.setServiceCategory(list.get(i).getCategoryName());
infoClass.setServiceName(list.get(i).getServiceName());
finalist.add(infoClass);
theMap.addMarker(new MarkerOptions()
.title(list.get(i).getServiceName())
.position(lng2)
.icon(BitmapDescriptorFactory
.fromResource(entertainment))
.snippet(list.get(i).getFirstName() + " "+ list.get(i).getLastName()) );
theMap.setOnInfoWindowClickListener(this);
}
我正在根据列表中的纬度和经度设置我的标记,并将所需的信息添加到类 InfoClass 的 ArrayList 中。现在,当我设置 setInfoWindowAdapter 并将 finalist 传递给我的 InfoWindowAdapter 实现时。
theMap.setInfoWindowAdapter(new InfoWindow(this, finalist));
我的信息窗口类
public class InfoWindow implements InfoWindowAdapter {
private final View myContentsView;
private LayoutInflater mInflator;
ArrayList<InfoClass> list;
public InfoWindow(Context context, ArrayList<InfoClass> list) {
//Context context = new MainActivity().getApplicationContext();
Context context2= context;
mInflator = LayoutInflater.from(context2);
this.list= list;
myContentsView = mInflator.inflate(R.layout.info_view, null);
}
@Override
public View getInfoWindow(Marker marker) {
return myContentsView;
}
@Override
public View getInfoContents(Marker arg0) {
return null;
}
}
现在在 getInfoWindow 方法中,我如何获取特定标记的信息,因为每个标记需要根据其 Location 显示单独的信息。