Как я могу получить доступ ко всем маркерам на моем GoogleMap-объекте (android maps v2)и установить их видимыми?
В настоящее время я пытаюсь реализовать кнопку ActionBar, которая при использовании устанавливает все мои маркеры на моем 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);
}
И установить все мои маркеры невидимы внутри другого метода:
for (int i = 0; i < mMarkerArray.length;; i++) {
mMarkerArray[i].setVisible(false);
}
Он отказывается добавлять маркеры в массив маркеров []. как я могу этого достичь?
MMarkerArray.добавить (маркер) не работает
3 ответа:
Я нашел ответ, который также касается моего списка клиентов, имеющих клиентов без координат - > (0,0;0,0). вдохновлен этим блогом.
Инициализировать ArrayList:
private ArrayList<Marker> mMarkerArray = new ArrayList<Marker>();
Добавьте маркер на мою карту и на 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); }}}
Установить все маркеры невидимыми
for (Marker marker : mMarkerArray) { marker.setVisible(false); //marker.remove(); <-- works too! }
Вы можете сохранить
Collection
OverlayItem
внутри вашегоActivity
илиFragment
, а затем вызовитеMapView.getOverlays().clear()
, чтобы сделать их "невидимыми", а затем добавьте их обратно, чтобы сделать их снова видимыми. ВызовитеMapView.invalidate()
после каждого действия, чтобы вызвать перерисовку карты.
Заменить
private Marker[] mMarkerArray = null;
С
И с тобой все будет в порядке.private List<Marker> mMarkerArray = new ArrayList<Marker>();
Если вы используете расширения карт Android, Вы можете просто перебирать все маркеры, используя
for (Marker marker : googleMap.getMarkers()) { marker.setVisible(false); }
Не имея своего
List
из всехMarker
s.