2017-01-13 4 views
0

Я могу получить все маркеры из базы данных Firebase. Но мне нужно построить эти маркеры, используя библиотеку кластеров Google Карт. В настоящее время моя карта не может отображать маркеры из базы данных Firebase.Используйте Google Map Cluster для отображения всех маркеров из базы данных firebase.

Это мой метод, чтобы добавить элементы

private void addItems() { 
    DatabaseReference mapsrefrence=FirebaseDatabase.getInstance().getReference().child("wr"); 
    mapsrefrence.child("pubs").addListenerForSingleValueEvent(
      new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        if (dataSnapshot.hasChildren()) { 
         for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { 
          // TODO: handle the post 
          LocationModel location = postSnapshot.getValue(LocationModel.class); 
          double latitude = location.getLat(); 
          double longitude = location.getLng(); 
          MyItem offsetItem = new MyItem(latitude, longitude); 
          mClusterManager.addItem(offsetItem); 
         } 
        } 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 
        Log.w(TAG, "getUser:onCancelled", databaseError.toException()); 
       } 
      }); 
} 

Это мой метод Кластер

private void setUpClusterer() { 
    // Position the map. 
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(50.28626380000001, 19.104079100000035), 10)); 

    // Initialize the manager with the context and the map. 
    // (Activity extends context, so we can pass 'this' in the constructor.) 
    mClusterManager = new ClusterManager<MyItem>(this, mMap); 

    // Point the map's listeners at the listeners implemented by the cluster 
    // manager. 
    mMap.setOnCameraIdleListener(mClusterManager); 
    mMap.setOnMarkerClickListener(mClusterManager); 

    // Add cluster items (markers) to the cluster manager. 
    addItems(); 
} 

Это где я называю мой кластеризатор

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 
    setUpClusterer(); 

    //displayClubLocations(); 
} 

ответ

0

Проверить этот ответ https://stackoverflow.com/a/41706650/1281180

После добавления/удаления элементов необходимо вызвать метод ClusterManager cluster().

private void addItems() { 
    ... 
    for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { 
     .... 
     mClusterManager.addItem(offsetItem); 
    } 

    mClusterManager.cluster(); 
}