InfoWindows не берет каждый маркер информационного окна - PullRequest
0 голосов
/ 12 июня 2018

Я загружаю маркеры из sqlite и делаю циклы, чтобы получить данные из sqlite, чтобы поместить маркер на каждую широту и долготу.Оно работает.Но когда я пытаюсь получить информационное окно от каждого маркера, это не работает.Это займет всего одно информационное окно.

это мой код:

while (cursor.moveToNext()){

                // mengambil koordinat lokasi ATM

                title = cursor.getString(1).toString();
                __global_endposition = cursor.getString(2).toString();
                alamat = cursor.getString(3).toString();
                String[] exp_endCoordinate = __global_endposition.split(",");
                double lat_endposition = Double.parseDouble(exp_endCoordinate[0]);
                double lng_endposition = Double.parseDouble(exp_endCoordinate[1]);
                LatLng endx = new LatLng(lat_endposition, lng_endposition);

                MarkerOptions options = new MarkerOptions()
                        .position(endx)
                        .title(title)
                        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
//                mMap.addMarker(options);
                Marker marker = googleMap.addMarker(options);
                mapBuilder.include(marker.getPosition());
                addedMarker = true;

                googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                    @Override
                    public void onInfoWindowClick(Marker marker) {
                        Toast.makeText(getActivity(), alamat, Toast.LENGTH_SHORT).show();

                    }
                });

            }

Это моя запись sqlite: введите описание изображения здесь

Когда яКлик на каждый маркер, он отображал только «Гигант Экспрес, Дж. Урип Сумохарджо, Клитрен, Гондокусуман, Кота Джокьякарта» для каждого окна информации о маркере.

1 Ответ

0 голосов
/ 12 июня 2018

Существует только один onInfoWindowClick слушатель на объект карты.В вашем случае вы добавляете содержимое alamat, которое всегда будет последней строкой результата курсора (индекс столбца 3).

Если вы хотите отобразить для каждого маркера содержимое alamat, как выПредполагается, что самый простой подход - установить в поле тега маркера содержимое alamat, а затем в слушателе использовать поле тега маркера в тосте:

alamat = cursor.getString(3).toString();

// ...

MarkerOptions options = new MarkerOptions()
    .position(endx)
    .title(title)
    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
Marker marker = googleMap.addMarker(options);
marker.setTag(new String(alamat));

// ...

googleMap.setOnInfoWindowClickListener(new 
    GoogleMap.OnInfoWindowClickListener() {
                @Override
                public void onInfoWindowClick(Marker marker) {
                    Toast.makeText(getActivity(), marker.getTag().toString(), Toast.LENGTH_SHORT).show();

                }
            });

Вскоре вы обнаружите, что можете захотетьсделать больше, чем просто отобразить строку тега.Таким образом, вы можете использовать более сложный объект в теге или использовать идентификатор marker в onInfoWindowClick для доступа к управляемой коллекции данных маркеров, например, к Hashmap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...