我正在使用Google Maps v2 API并在地图上放置标记。标记表示不同的东西,所以我想为每个标记类设置一个自定义InfoWindow布局。问题在于覆盖getInfoContents
和getInfoWindow
(每次选择标记时都会调用它)将为每个标记提供相同的布局。针对不同标记的不同InfoWindow
有没有不同的方式来做到这一点,以便我可以为不同组的标记充气不同的布局?
我正在使用Google Maps v2 API并在地图上放置标记。标记表示不同的东西,所以我想为每个标记类设置一个自定义InfoWindow布局。问题在于覆盖getInfoContents
和getInfoWindow
(每次选择标记时都会调用它)将为每个标记提供相同的布局。针对不同标记的不同InfoWindow
有没有不同的方式来做到这一点,以便我可以为不同组的标记充气不同的布局?
问题是,重写的getInfoContents和getInfoWindow,每次选择标记时都会调用它,将为每个标记提供相同的布局。
他们当然不必这样做。您通过Marker
作为每种方法的参数,因此可根据Marker
中的信息做出不同的处理。
但你可以。根据您的支票在充气标记的InfoWindow
之前进行检查并膨胀不同的布局。
当您在public View getInfoContents(Marker args)
方法中收到Marker
时,将创建一个if语句,该语句将测试此标记是否与您想要的类型相对应,并基于此充气相关布局。
你可以检查例如什么位置运行
clickMarkerLatLng = args.getPosition();
标记的坐标,并在此determin什么InfoWindow
应提交为主。
它非常简单 map.setInfoWindowAdapter(新InfoWindowAdapter(){
@Override
public View getInfoWindow(Marker marker) {
// TODO Auto-generated method stub
View v;
LayoutInflater inflator=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
v=inflator.inflate(R.layout.info_inflator, null);
TextView text=(TextView)v.findViewById(R.id.title);
Button ok_button=(Button) v.findViewById(R.id.ok_button);
text.setText(marker.getTitle());
ok_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
return v;
}
@Override
public View getInfoContents(Marker marker) {
// TODO Auto-generated method stub
return null;
}
});
你可以比较里面getifowindow ...那里你有标记来比较 – 2013-06-04 11:13:51
我最终做的是添加一个键/标记到片段的开头,从标记中提取该标记传递给getinfowindow,然后使用switch语句控制显示的窗口 – Rarw 2013-06-04 12:31:49
同意 - 你可以在每个标记使用不同的信息。例如标题和片段可以标记A和标记B之间的不同。 。然而,在这两种情况下getInfoContents/getInfoWindow的XML布局膨胀是不是相同? – Rarw 2013-03-05 18:04:46
@Rarw:不一定,你是膨胀的人,你可以使用像'if'和'else'这样的数据控制结构来 – CommonsWare 2013-03-05 18:09:08
得到它 - 我将添加一个键到其中一个标记值并检查这种方式。 – Rarw 2013-03-05 18:16:25