使用arraylist在Google Maps Android API V2中添加260个标记位置

时间:2015-12-14 20:18:12

标签: java android google-maps

我正在使用此代码在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和循环来做到这一点吗?

感谢。

1 个答案:

答案 0 :(得分:1)

假设您的标记有ArrayListLatLng坐标。所以,您可以像这样使用它,例如:

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

希望它有所帮助。