【问题标题】:NullPointerException on removing item from ClusterManager with NonHierarchicalDistanceBasedAlgorithm使用 NonHierarchicalDistanceBasedAlgorithm 从 ClusterManager 中删除项目时出现 NullPointerException
【发布时间】: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


    【解决方案1】:

    这是库中的一个错误,正如这里所说,它将尽快提供一个修复版本:

    https://github.com/googlemaps/android-maps-utils/issues/348

    【讨论】:

    • 看来我现在也遇到了同样的问题 - 库中是否可能再次引入了一些东西?
    • 你能提供更多细节吗? github.com/googlemaps/android-maps-utils 库仍然需要更新,但长期以来一直没有针对导致此问题的代码进行修改。
    • 我已在 GitHub 问题跟踪器上添加了我的问题,请查看。基本上我得到 java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.hashCode()' on an null object reference 同时我的 ClusterManager 有 1000 多个元素
    • 检查您报告的问题是否可能涉及新问题会更容易,因为它可能与当前问题不同。
    • 当然,确实开了一个新问题:github.com/googlemaps/android-maps-utils/issues/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多