Получить данные (заголовок) из информационного окна маркера и поставить на диалоговое окно - PullRequest
0 голосов
/ 24 февраля 2020

Я создал MapView, в котором я нанесу маркер на карту, используя долготу и широту, вызываемые из базы данных Firestore. а также получить название должности в информационном окне в качестве заголовка, но теперь я создал диалоговое окно, в котором я хочу показать название заголовка, которое находится в информационном окне, для которого его маркер, так что мне делать ?? Пожалуйста, поделитесь ответом

Это мой Java Код

@Override
public void onMapReady(final GoogleMap googleMap) {

    mGoogleMap = googleMap;

    FirebaseFirestore mDatabase = FirebaseFirestore.getInstance();
    CollectionReference mOrderRef = mDatabase.collection("Job Post1");

    mOrderRef.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
            for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                if (documentSnapshot.contains("lat") && documentSnapshot.contains("lon")) {
                    String lat = (String) documentSnapshot.get("lat");
                    String lon = (String) documentSnapshot.get("lon");
                    final String title = (String) documentSnapshot.get("title");

                    if (lat != null && lon != null && !lat.isEmpty() && !lon.isEmpty()) {
                        double latitude = Double.parseDouble(lat.trim());
                        double longitude = Double.parseDouble(lon.trim());
                        googleMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title(title));
                        googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 12.0f));

                        googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                            @Override
                            public void onInfoWindowClick(Marker marker) {
                                Jobpost jobpost = new Jobpost();
                                TextView txtclose, textView26;
                                myDialog.setContentView(R.layout.custompopup);
                                txtclose = (TextView) myDialog.findViewById(R.id.txtclose);
                                textView26 = (TextView) myDialog.findViewById(R.id.textView26);
                                txtclose.setText("X");
                                txtclose.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View v) {
                                        myDialog.dismiss();
                                    }
                                });
                                Intent intent = getActivity().getIntent();

                                myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                                myDialog.show();
                            }
                        });

                    }

                }
            }

        }

    });
}

Диалог открывается при нажатии на информационное окно маркера

1 Ответ

0 голосов
/ 24 февраля 2020

Вы можете использовать marker, чтобы найти title, который вы установили во время addMarker. Проверьте ниже:

googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
    @Override
    public void onInfoWindowClick(Marker marker) {
        new AlertDialog.Builder(TestActivity.this)
                .setTitle(marker.getTitle())
                .setMessage(marker.getPosition().latitude + " -> " + marker.getPosition().longitude)
                .setPositiveButton("OK", null)
                .create().show();
    }
});

Вывод:
enter image description here

...