当我在googlemapsv2上启动应用程序时,群集不会显示

时间:2015-10-05 22:02:07

标签: android google-maps google-maps-markers markerclusterer

我有一张地图,我有一个带有json查询的数据库。我正在尝试创建一个有标记的地图(标题等)。因为有这么多我想到了聚类,所以我实现了它们。但问题是它不能像我想要的那样工作。当应用程序启动时,它会显示地图,放大您的位置,但不显示任何标记或群集。但是,当你缩小时,群集显示,带有标记等。任何想法有什么问题?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    context  = getApplicationContext();
    if (getSharedPreferencesRadius() == null) {
        SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, Context.MODE_PRIVATE).edit();
        editor.putInt("radius", 2000);
        editor.commit();
    }
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);



    setUpMapIfNeeded();

}   




@Override
public void onMapReady(GoogleMap googleMap) {
   this.mMap = googleMap;
    setUpMap();

}


@Override
protected void onResume() {
    super.onResume();
    setUpMapIfNeeded();
}


private void setUpMapIfNeeded() {

    if (mMap == null) {

        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
        Log.d("MAP", " "+mMap);
        // Check if we were successful in obtaining the map.
        if (mMap != null) {
            setUpMap();
        }
    }
} 

private void setUpMap() {
    mMap.setMyLocationEnabled(true);
    setMyLocationLatLng();
    kompasEnabled();
    radiusEnable(latLng);
    ZoomIN(latLng);


    mClusterManager = new ClusterManager<Marker>(this, mMap);

    mClusterManager.clearItems();

    mMap.setOnCameraChangeListener(mClusterManager);
    mMap.setOnMarkerClickListener(mClusterManager);

    mClusterManager.cluster();

    jsonRequest(latitude, longitude);



}   

protected GoogleMap getMap() {
    setUpMapIfNeeded();
    return mMap;
}

这是activity_main

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
   android:id="@+id/container_toolbar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar"></include>
    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/clayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/map"
                tools:context=".MainActivity"
         android:name="com.google.android.gms.maps.SupportMapFragment" />

     </android.support.design.widget.CoordinatorLayout>

  </LinearLayout>

如果您需要更多信息,请询问。

更新1: 我发现没有mMap.setOnCameraChangeListener(mClusterManager); 它不起作用(甚至不显示它们)。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案,经过数小时和数小时查看我的代码,搜索我发现的互联网,您需要在创建所有项目时,需要致电:

mClusterManager.cluster();

就是这样。