Как добавить infoWindowAdapters для нескольких маркеров, имеющих разные значения? - PullRequest
0 голосов
/ 30 мая 2019
 Marker drMark=mMap.addMarker(new MarkerOptions().position(drLoc).title("Lahore").icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)));
 Marker selfMark=mMap.addMarker(new MarkerOptions().position(curLocation).title("Lahore").icon(BitmapDescriptorFactory.fromResource(R.drawable.passengermarker)));

Я пытаюсь добавить infoWindow к нескольким маркерам на картах Activity.Но адаптер infoWindow показывает одинаковые данные на всех маркерах после инициализации в onMapsReady.Я хочу показать infoWindow на всех маркерах со своей собственной информацией, т.е. маркерные infoWindows должны быть инициализированы индивидуально, чтобы данные стали релевантными.

1 Ответ

0 голосов
/ 31 мая 2019

Один из способов сделать это - использовать теги для маркеров, чтобы различать маркеры в разделе infoWindowAdapter.Я подумал, что это более простой способ сделать эту работу.

selfMark=mMap.addMarker(new MarkerOptions().position(curLocation).title("Lahore").icon(BitmapDescriptorFactory.fromResource(R.drawable.passengermarker)));
                selfMark.setTag("user");

 drMark=mMap.addMarker(new MarkerOptions().position(drLoc).title("Lahore").icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)));
                    drMark.setTag("driver");

этот раздел для InfoWinfoAdapter:

     mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
                            @Override
                            public View getInfoWindow(Marker marker) {
                                return null;
                            }

                                @Override
                                public View getInfoContents(final Marker marker) {
                                View view = getLayoutInflater().inflate(R.layout.driver_inf, null);

                                final TextView tvEmail = view.findViewById(R.id.emailDrive);
                                final TextView tvname = view.findViewById(R.id.nameDrive);
                                final TextView tvlocality = view.findViewById(R.id.localityDrive);
                                    if(marker.getTag().equals("driver")){
                                        tvEmail.setText("Driver");
                                    }
                                    else if (marker.getTag().equals("user")){
                                        tvEmail.setText("Passenger");
                                    }


                                tvname.setText(dC.getName());
                                Geocoder gc = new Geocoder(passengerAct.this, Locale.getDefault());
                                try {
                                    List<Address> adr = gc.getFromLocation(marker.getPosition().latitude, marker.getPosition().longitude, 1);
                                    Address address = adr.get(0);
                                    tvlocality.setText(address.getLocality() + "," + address.getCountryName());
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
                                return view;
                            }
                        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...