我正在使用此代码在Google地图上插入多个标记:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
Marker marker1 = map.addMarker(new MarkerOptions()
.position(new LatLng(1.123456, -2.123456))
.title("Title1")
.snippet("Snippet1")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.icon1)));
Marker marker2 = map.addMarker(new MarkerOptions()
.position(new LatLng(3.123456,-4.123456))
.title("Title2")
.snippet("Snippet2")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.icon2)));
但我总共要添加260个标记..每个标记都有一个特定的(位置,标题,片段,图标)。
任何人都可以让我知道如何使用arraylist和循环来做到这一点吗?
感谢。
答案 0 :(得分:1)
假设您的标记有ArrayList
个LatLng
坐标。所以,您可以像这样使用它,例如:
ArrayList<LatLng> coordinates; // your ArrayList with marker's coordinates
BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.icon2));
...
int size = coordinates.size();
for (int i = 0; i < size; ++i) {
LatLng coordinate = coordinates.get(i);
googleMap.addMarker(new MarkerOptions()
.position(coordinate)
.icon(icon)
.title("Title" + (i + 1))
.snippet("Snippet" + (i + 1))
.anchor(0.5f, 0.5f));
}
希望它有所帮助。
UPD 15.12.2015
根据您的代码,我更新了使用所有属性的代码。
另一个UPD 15.12.2015
好的,如果我们需要每个标记的不同标题,片段,图标和位置,我们需要特殊的类来存储这些属性,对吗?它看起来像:
public class MyMarker {
private LatLng position;
private BitmapDescriptor icon;
private String title;
private String snippet;
public MyMarker(LatLng position, BitmapDescriptor icon, String title, String snippet) {
this.position = position;
this.icon = icon;
this.title = title;
this.snippet = snippet;
}
public LatLng getPosition() {
return position;
}
public BitmapDescriptor getIcon() {
return icon;
}
public String getTitle() {
return title;
}
public String getSnippet() {
return snippet;
}
public MarkerOptions buildGoogleMarker() {
return new MarkerOptions()
.position(this.position)
.icon(this.icon)
.title(this.title)
.snippet(this.snippet)
.anchor(0.5f, 0.5f);
}
}
然后,我想,我们以某种方式获得这些对象的集合。并且可以像这样使用它:
ArrayList<MyMarker> markers; // your ArrayList with markers
for (MyMarker myMarker: markers) {
googleMap.addMarker(myMarker.buildGoogleMarker());
}
UPD 3
要将新项目添加到ArrayList
使用.add
的{{1}}方法中,例如:
ArrayList
希望它有所帮助。