ClusterManager.addItem (); не добавляет элементы на карту из базы данных, тоже не показывает ошибку - PullRequest
0 голосов
/ 27 апреля 2020
 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);
    }
       }
...