无法获得标记ClusterManager

时间:2018-11-24 15:37:00

标签: java google-maps-android-api-2

我正在为我的应用程序使用google map API,我想创建一个集群管理器。确实,地图上将会有很多标记,我希望它看起来不错。

我已点击以下链接:https://developers.google.com/maps/documentation/android-sdk/utility/marker-clustering

有我的代码:

private ClusterManager<cluster_manager> clusterManager;
private void setUpClusterer(String choix){
    clusterManager = new ClusterManager<cluster_manager>(OnlyVert.this, googleMap);
    googleMap.setOnCameraIdleListener(clusterManager);
    googleMap.setOnMarkerClickListener(clusterManager);
    GetAllMarkers(choix);
}
// Fin localisation //
// Fonctions pour recuperer les fonctions:
public void GetAllMarkers(final String select){

    DatabaseReference mMarkerRef = mDatabase.child("Pins").child(select);
    mMarkerRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot snapshotNode: dataSnapshot.getChildren()) {

                //Getting back my markers
                String Latitude = snapshotNode.child("Latitude").getValue().toString();
                String Longitude = snapshotNode.child("Longitude").getValue().toString();
                String Description = snapshotNode.child("Description").getValue().toString();
                String ImageURL = snapshotNode.child("ImgUrl").getValue().toString();

                double lat = Double.parseDouble(Latitude);
                double lon = Double.parseDouble(Longitude);
                LatLng markerLocation = new LatLng(lat, lon);

                // puting them on the map
                Marker marker = googleMap.addMarker(new MarkerOptions()
                        .position(markerLocation)   // Position
                        .title(select) // Titre
                        .draggable(false)      // Pour la 3D
                        .snippet(Description)   // Pour la description

                );
                // Cluster manager ?
                cluster_manager offsetItem = new cluster_manager(lat, lon);
                clusterManager.addItem(offsetItem);

                /*for (int i = 0; i < 10; i++) {
                    double offset = i / 60d;
                    lat = lat + offset;
                    lon = lon + offset;
                    cluster_manager offsetItem = new cluster_manager(lat, lon);
                    clusterManager.addItem(offsetItem);

                }*/


            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    });
}

然后:

public class cluster_manager implements ClusterItem {
private  LatLng mPosition;
private String mTitle;
private String mSnippet;

public cluster_manager(double lat, double lon){
    mPosition = new LatLng(lat, lon);
}

public cluster_manager(double lat, double lng, String title, String snippet) {
    mPosition = new LatLng(lat, lng);
    mTitle = title;
    mSnippet = snippet;
}


@Override
public LatLng getPosition() {
    return mPosition;
}


public String getmSnippet() {
    return mSnippet;
}

public String getmTitle() {
    return mTitle;
}

}

问题在于那行:

googleMap.setOnCameraIdleListener(clusterManager);

这是文档中写的内容,但是不起作用:

error: incompatible types: ClusterManager<cluster_manager> cannot be converted to OnCameraIdleListener

所以我把它投进了他想要的东西:

        googleMap.setOnCameraIdleListener((GoogleMap.OnCameraIdleListener) clusterManager);

但是:

    java.lang.ClassCastException: com.google.maps.android.clustering.ClusterManager cannot be cast to com.google.android.gms.maps.GoogleMap$OnCameraIdleListener

我已经尝试了几件事,但是没用

我希望您能够帮助我使集群管理器正常工作 感谢您的帮助和时间:)

0 个答案:

没有答案