如何访问我的GoogleMap-Object(android maps v2)上的所有标记并将它们设置为(可见)?

bof*_*edo 3 android google-maps-markers android-maps-v2

我目前正在尝试实现一个ActionBar-Button,在使用时将我的GoogleMap对象上的所有标记设置为可见或不可见.我的问题是,我不知道如何在创建并在地图上显示所有标记后引用它.我正在寻找一个解决方案,我将所有标记对象存储到一个数组中,我可以访问我的代码的其他部分.这种方法合理吗?

这是我在想的:

 private Marker[] mMarkerArray = null;
 for (int i = 0; i < MainActivity.customers.size(); i++) {

     LatLng location = new LatLng(mData.lat, mData.lng);

     Marker marker = mMap.addMarker(new MarkerOptions().position(location)
                          .title(mData.title)
                          .snippet(mData.snippet));
     mMarkerArray.add(marker);                      
   }
Run Code Online (Sandbox Code Playgroud)

并在另一个方法中将所有标记设置为不可见:

for (int i = 0;  i < mMarkerArray.length;; i++) {
    mMarkerArray[i].setVisible(false);
}
Run Code Online (Sandbox Code Playgroud)

它拒绝将标记添加到Marker [] - 数组.我怎么能实现它?

mMarkerArray.add(标记)不起作用

bof*_*edo 13

我想出了一个答案,也是我的customerList让客户没有坐标 - >(0,0; ​​0,0).灵感来自这个博客.

初始化ArrayList:

private ArrayList<Marker> mMarkerArray = new ArrayList<Marker>();
Run Code Online (Sandbox Code Playgroud)

将标记添加到我的地图和mMarkerArray:

for (int i = 0; i < MainActivity.customers.size(); i++) {
        Customer customer = MainActivity.customers.get(i);
        if (customer.getLon() != 0.0) {
            if (!customer.isProspect()) {
                Data mData= new Data(customer.getLat(),customer.getLon(),customer.getName(),
                        customer.getOrt());

                LatLng location = new LatLng(mData.lat, mData.lng);

                Marker marker = mMap.addMarker(new MarkerOptions().position(location)
                          .title(mData.title)
                          .snippet(mData.snippet));

                mMarkerArray.add(marker); 
}}} 
Run Code Online (Sandbox Code Playgroud)

设置所有标记不可见

for (Marker marker : mMarkerArray) {
    marker.setVisible(false);
    //marker.remove(); <-- works too!
}
Run Code Online (Sandbox Code Playgroud)