Как можно дать каждому маркеру свой номер, название?

Делаю мобильное приложение на основе Google Maps. Данные для маркеров беру из БД Firebase, заношу их в HashMap:

HashMap<String, Double> dataDouble = (HashMap<String, Double>) dataSnapshot.getValue();
            double latitude = dataDouble.get("latitude");
            double longitude = dataDouble.get("longitude");
            HashMap<String, String> dataString = (HashMap<String, String>) dataSnapshot.getValue();
            String name = dataString.get("name");
            final String address = dataString.get("address");

            LatLng location = new LatLng(latitude, longitude);
            map.addMarker(new MarkerOptions().position(location));
            map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                @Override
                public boolean onMarkerClick(Marker marker) {
                    //getActivity() берет активность, в которой запущен наш фрагмент
                    Intent intent = new Intent(getActivity(), InfoActivity.class);
                    intent.putExtra("address", address); // добавляем в интент
                    startActivity(intent);
                    return false;
                }
            });
        }

В итоге в интент отправляется адрес последнего маркера. А как можно отправить все адреса из БД и связать их с каждым маркером? Была идея занести все адреса в ArrayList и отправлять в интенте номер нужного нам адреса, но тогда возникает другой вопрос: как можно дать каждому маркеру свой номер, название?


Ответы (2 шт):

Автор решения: Сергей Бувака

У маркера есть метод setTag(). Вы можете задать нужный вам тэг для вашего маркера.

Ещё можно вызвать у маркера метод marker.snippet, который на вход принимает Object и хранить в нем свои кастомные данные.

Третий вариант, вы когда вы добавляете маркеры методом googleMap.addMarker() возвращает вам экземпляр маркера и вы можете хранить HashMap где ключ маркер, а значением ваши данные.

Более подробно можно поглядеть тут пот работе с маркерами

https://developers.google.com/maps/documentation/android-sdk/marker

→ Ссылка
Автор решения: Sanchello

Все маркеры можно занести в ArrayList.

marker = map.addMarker(new MarkerOptions().position(location));
            marker_info.add(marker);

Дальше в методе onMarkerClick мы добавляем в интент адрес места из ArrayList с индексом, который имеет наш кликнутый маркер.

intent.putExtra("address", address_info.get(marker_info.indexOf(marker)));
→ Ссылка