未找到 setOnCameraIdleListener android google 地图集群
setOnCameraIdleListener not found android google map cluster
未找到 setOnCameraIdleListener() 方法
在 android google 地图集群中。
我编译了这个库:
dependencies { compile
'com.google.maps.android:android-maps-utils:0.5+'}
public class ClusteringDemoActivity extends MapsActivity {
private ClusterManager<MyItem> mClusterManager;
@Override
protected void startDemo() {
getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(51.503186, -0.126446), 10));
mClusterManager = new ClusterManager<MyItem>(this, getMap());
getMap().setOnCameraIdleListener(mClusterManager);
getMap().setOnMarkerClickListener(mClusterManager);
addItems();
}
private void addItems() {
double lat = 51.5145160;
double lng = -0.1270060;
for (int i = 0; i < 10; i++) {
double offset = i / 60d;
lat = lat + offset;
lng = lng + offset;
MyItem offsetItem = new MyItem(lat, lng);
mClusterManager.addItem(offsetItem);
}
}
}
`
我猜您使用的是旧版本的 google 播放服务,它不包含与 GoogleMap [=22= 相关的 setOnCameraIdleListener 方法的实现] 模型.
因此,请尝试通过放置或编辑您的 build.gradle 文件来升级您的播放服务:
编译'com.google.android.gms:play-services:11.0.1'
我通过编辑我的 build.gradle
文件解决了这个问题:
compile 'com.google.maps.android:android-maps-utils:0.5'
请试试这个
MarkerClustering.java
import android.app.Activity;
import android.util.Log;
import com.google.android.gms.maps.GoogleMap;
import com.google.maps.android.clustering.ClusterManager;
public class MarkerClustering implements GoogleMap.OnCameraIdleListener {
private static final String TAG = MarkerClustering.class.getSimpleName();
public MarkerClustering(Activity activity, GoogleMap googleMap) {
try {
ClusterManager<CustomClusterItem> clusterManager = new ClusterManager<>(activity, googleMap);
MarkerRenderer markerRenderer = new MarkerRenderer(activity, googleMap, clusterManager, this);
clusterManager.setRenderer(markerRenderer);
googleMap.setOnCameraIdleListener(clusterManager);
googleMap.setOnMarkerClickListener(clusterManager);
} catch (Exception e) {
Log.e(TAG, Log.getStackTraceString(e));
}
}
@Override
public void onCameraIdle() {
// Your code
}
}
MarkerRenderer.java
import android.content.Context;
import com.google.android.gms.maps.GoogleMap;
import com.google.maps.android.clustering.ClusterManager;
import com.google.maps.android.clustering.view.DefaultClusterRenderer;
public class MarkerRenderer extends DefaultClusterRenderer<CustomClusterItem> implements GoogleMap.OnCameraIdleListener {
private GoogleMap.OnCameraIdleListener onCameraIdleListener;
public MarkerRenderer(Context context, GoogleMap googleMap, ClusterManager<CustomClusterItem> clusterManager, GoogleMap.OnCameraIdleListener onCameraIdleListener) {
super(context, googleMap, clusterManager);
this.onCameraIdleListener = onCameraIdleListener;
}
@Override
public void onCameraIdle() {
if (onCameraIdleListener != null) {
onCameraIdleListener.onCameraIdle();
}
}
}
您可以使用默认 ClusterItem。如果你想要意味着通过自定义 class 自定义它,如下所示。
CustomClusterItem.java
import com.google.android.gms.maps.model.LatLng;
import com.google.maps.android.clustering.ClusterItem;
public class CustomClusterItem implements ClusterItem {
private final LatLng latLng;
CustomClusterItem(LatLng latLng) {
this.latLng = latLng;
}
@Override
public LatLng getPosition() {
return latLng;
}
}
未找到 setOnCameraIdleListener() 方法 在 android google 地图集群中。
我编译了这个库:
dependencies { compile 'com.google.maps.android:android-maps-utils:0.5+'}
public class ClusteringDemoActivity extends MapsActivity {
private ClusterManager<MyItem> mClusterManager;
@Override
protected void startDemo() {
getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(51.503186, -0.126446), 10));
mClusterManager = new ClusterManager<MyItem>(this, getMap());
getMap().setOnCameraIdleListener(mClusterManager);
getMap().setOnMarkerClickListener(mClusterManager);
addItems();
}
private void addItems() {
double lat = 51.5145160;
double lng = -0.1270060;
for (int i = 0; i < 10; i++) {
double offset = i / 60d;
lat = lat + offset;
lng = lng + offset;
MyItem offsetItem = new MyItem(lat, lng);
mClusterManager.addItem(offsetItem);
}
}
}
`
我猜您使用的是旧版本的 google 播放服务,它不包含与 GoogleMap [=22= 相关的 setOnCameraIdleListener 方法的实现] 模型.
因此,请尝试通过放置或编辑您的 build.gradle 文件来升级您的播放服务:
编译'com.google.android.gms:play-services:11.0.1'
我通过编辑我的 build.gradle
文件解决了这个问题:
compile 'com.google.maps.android:android-maps-utils:0.5'
请试试这个
MarkerClustering.java
import android.app.Activity;
import android.util.Log;
import com.google.android.gms.maps.GoogleMap;
import com.google.maps.android.clustering.ClusterManager;
public class MarkerClustering implements GoogleMap.OnCameraIdleListener {
private static final String TAG = MarkerClustering.class.getSimpleName();
public MarkerClustering(Activity activity, GoogleMap googleMap) {
try {
ClusterManager<CustomClusterItem> clusterManager = new ClusterManager<>(activity, googleMap);
MarkerRenderer markerRenderer = new MarkerRenderer(activity, googleMap, clusterManager, this);
clusterManager.setRenderer(markerRenderer);
googleMap.setOnCameraIdleListener(clusterManager);
googleMap.setOnMarkerClickListener(clusterManager);
} catch (Exception e) {
Log.e(TAG, Log.getStackTraceString(e));
}
}
@Override
public void onCameraIdle() {
// Your code
}
}
MarkerRenderer.java
import android.content.Context;
import com.google.android.gms.maps.GoogleMap;
import com.google.maps.android.clustering.ClusterManager;
import com.google.maps.android.clustering.view.DefaultClusterRenderer;
public class MarkerRenderer extends DefaultClusterRenderer<CustomClusterItem> implements GoogleMap.OnCameraIdleListener {
private GoogleMap.OnCameraIdleListener onCameraIdleListener;
public MarkerRenderer(Context context, GoogleMap googleMap, ClusterManager<CustomClusterItem> clusterManager, GoogleMap.OnCameraIdleListener onCameraIdleListener) {
super(context, googleMap, clusterManager);
this.onCameraIdleListener = onCameraIdleListener;
}
@Override
public void onCameraIdle() {
if (onCameraIdleListener != null) {
onCameraIdleListener.onCameraIdle();
}
}
}
您可以使用默认 ClusterItem。如果你想要意味着通过自定义 class 自定义它,如下所示。
CustomClusterItem.java
import com.google.android.gms.maps.model.LatLng;
import com.google.maps.android.clustering.ClusterItem;
public class CustomClusterItem implements ClusterItem {
private final LatLng latLng;
CustomClusterItem(LatLng latLng) {
this.latLng = latLng;
}
@Override
public LatLng getPosition() {
return latLng;
}
}