2015-12-14 104 views
-3

添加在谷歌地圖API的Android V2 260個標記位置我使用這個代碼插入谷歌地圖上的多個標記:使用ArrayList的

@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

可能的重複[幫助理解java'的'循環](http://stackoverflow.com/questions/5162845/help-with-understanding-java-for-loops) – muddyfish

回答

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 2015年12月15日

我更新了我的代碼,代碼使用的所有屬性,根據你的代碼。

另一個UPD 2015年12月15日

好吧,如果我們需要不同的標題,摘要,圖標和位置爲每個標記,我們需要存儲這些特性專班,對不對?它會看起來像:

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方法ArrayList,e.g:

List<MyMarker> markers = new ArrayList<>(); 
MyMarker myMarker = new MyMarker(
    new LatLng(1.123456, -2.123456), 
    BitmapDescriptorFactory.fromResource(R.drawable.icon2)), 
    "title1", 
    "snippet1"); 
markers.add(myMarker); 

希望它能幫助。

+0

謝謝,但我需要tu使用全部項目(位置+標題+片段+圖標)。 – Gama

+0

我需要的是在地圖上設置多個標記,但每個標記都有不同的位置(標題,片段,圖標)。 – Gama

+0

請看新代碼片段=) –