private void setUpClusterer() {
myPatiens=new ArrayList<>();
// Position the map.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(geoPoint.getLatitude(), geoPoint.getLongitude()), 10));
// Initialize the manager with the context and the map.
// (Activity extends context, so we can pass 'this' in the constructor.)
mClusterManager = new ClusterManager<PatientsOnMap>(this, map);
// Point the map's listeners at the listeners implemented by the cluster
// manager.
map.setOnCameraIdleListener(mClusterManager);
map.setOnMarkerClickListener(mClusterManager);
// Add cluster items (markers) to the cluster manager.
// addItems();
additemsfromdatabsedata();
}
private void additemsfromdatabsedata(){
myRef=FirebaseDatabase.getInstance().getReference("patientcase");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
myPatiens.clear();
myPatiens=new ArrayList<>();
for(DataSnapshot postsnap:dataSnapshot.getChildren()){
final PatientCase k=postsnap.getValue(PatientCase.class);
Toast.makeText(getApplicationContext(),k.getLatitude()+"lojk",Toast.LENGTH_LONG).show();
myPatiens.add(k);
mClusterManager.addItem(new PatientsOnMap(k.getLatitude(),k.getLongitude()));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
я назвал метод установки кластера таким образом
private void initfusedlocatio() {
if(ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MainActivity.this,Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED ) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_COde);
return; }
mylocation.getLastLocation().addOnCompleteListener(new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
if(task.isSuccessful()){
Location location=task.getResult();
geoPoint=new GeoPoint(location.getLatitude(),location.getLongitude());
addmarkeronmap(geoPoint);
setUpClusterer();
}
}
});
}
и initifusedlocation () вызвали метод onCreate, а PatientCase - это сохраненная мной объектная модель базы данных, а PatientOnMap - модель классов, которая реализует ClusterItem, он отменяет 3 метода. Поэтому, пожалуйста, помогите мне, маркеры не добавляются на карту, я попытался добавить маркеры с помощью addItem (), в который он успешно добавляет маркеры.
private void addItems() {
// Set some lat/lng coordinates to start with.
double lat = geoPoint.getLatitude();
double lng = geoPoint.getLongitude();
// Add ten cluster items in close proximity, for purposes of this example.
for (int i = 0; i < 10; i++) {
double offset = i / 60d;
lat = lat + offset;
lng = lng + offset;
PatientsOnMap offsetItem = new PatientsOnMap(lat, lng);
mClusterManager.addItem(offsetItem);
}
}