2017-01-13 9 views
0

Firebase 데이터베이스에서 모든 마커를 가져올 수 있습니다. 하지만 Google지도 클러스터링 라이브러리를 사용하여 이러한 마커를 플롯해야합니다. 현재 내지도는 Firebase 데이터베이스의 마커를 표시 할 수 없습니다. Google지도 클러스터를 사용하여 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(); 
}