【发布时间】:2017-01-19 14:39:44
【问题描述】:
我正在使用 Google 地图和集群开发一个 Android 应用程序。
当我尝试从集群管理器中删除项目时,我遇到了空指针异常。
E/UncaughtException: java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.remove(java.lang.Object)' on a null object reference
at com.google.maps.android.quadtree.PointQuadTree.remove(PointQuadTree.java:176)
at com.google.maps.android.quadtree.PointQuadTree.remove(PointQuadTree.java:171)
at com.google.maps.android.quadtree.PointQuadTree.remove(PointQuadTree.java:153)
at com.google.maps.android.clustering.algo.NonHierarchicalDistanceBasedAlgorithm.removeItem(NonHierarchicalDistanceBasedAlgorithm.java:95)
at com.google.maps.android.clustering.algo.PreCachingAlgorithmDecorator.removeItem(PreCachingAlgorithmDecorator.java:61)
at com.google.maps.android.clustering.ClusterManager.removeItem(ClusterManager.java:161)
at com.company.myApp.controllers.MapClusterManager.removeItem(MapClusterManager.java:72)
抛出异常的代码如下:
if(clusterManager.getAlgorithm().getItems().contains(mapClusterItem)) {
clusterManager.removeItem(mapClusterItem); // <-- NPE here
clusterManager.cluster();
}
如您所见,我实际上是在删除之前检查项目是否存在。
集群设置如下:
clusterManager = new ClusterManager<MapClusterItem>(context, googleMap);
algo = new NonHierarchicalDistanceBasedAlgorithm<MapClusterItem>();
clusterManager.setAlgorithm(algo);
问题是 PointQuadTree.remove(double x, double y, T item) (Google Library) 抛出异常。 有人知道怎么解决吗?
GridBasedAlgoritm 不适合我的情况。我想使用
NonHierarchicalDistanceBasedAlgorithm
.
我正在使用来自 Google Maps Utils 的集群库。
compile 'com.google.maps.android:android-maps-utils:0.4.+'
【问题讨论】:
标签: java android google-maps markerclusterer