当我在 googlemapsv2 上启动应用程序时,集群不显示
Clusters don't show when i start the app on googlemapsv2
我有一张地图和一个包含 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);
它不起作用(甚至不会显示它们)。有什么想法吗?
我找到了解决方案,经过数小时的查看我的代码并搜索我发现的互联网,当您创建所有项目时,您需要调用:
mClusterManager.cluster();
就是这样。
我有一张地图和一个包含 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); 它不起作用(甚至不会显示它们)。有什么想法吗?
我找到了解决方案,经过数小时的查看我的代码并搜索我发现的互联网,当您创建所有项目时,您需要调用:
mClusterManager.cluster();
就是这样。