Я пытаюсь разместить нарисованное изображение в качестве маркера на своей карте. Я использую геоквери для получения данных из определенного местоположения, данные извлекаются правильно, но проблема в том, что только один маркер имеет маркер изображения, оставшийся из них имееткрасный маркер по умолчанию. Я попробовал тост в условиях if, чтобы проверить, работают они или нет, но каким-то образом
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.firstmarker));
не работает должным образом в условии if, он устанавливает только одно изображениеи отдых не меняется.Есть ли что-то, что я делаю не так?
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Location");
GeoFire geoFire = new GeoFire(ref);
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(latLng1.latitude, latLng1.longitude), 2);
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(final String key, GeoLocation location) {
UIDLocation.put(key,location);
marker = mMap.addMarker(new MarkerOptions().position(new LatLng(location.latitude, location.longitude)));
String tagkey = key;
marker.setTag(tagkey);
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child(key);
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
String cat = dataSnapshot.child("category").getValue().toString();
if (cat.equals("first")){
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.firstmarker));
markers.put(key, marker);
}
else if (cat.equals("second")){
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.secondmarker));
markers.put(key, marker);
}
else if (cat.equals("third")){
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.thirdmarker));
markers.put(key, marker);
}
else{
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.forthmarker));
markers.put(key, marker);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
public void onKeyExited(String key) {
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
}
@Override
public void onGeoQueryReady() {
}
@Override
public void onGeoQueryError(DatabaseError error) {
}
});