Android Google 地图实用程序 - onClusterClick 导致 NullPointerException 错误
Android Google Maps Utility - onClusterClick causes NullPointerException error
用 Nativescript 编写应用程序。以下设置工作正常,没有错误:
// initialize cluster manager
dis.cluster_manager = new dis.clustering.ClusterManager(app.android.context, dis.gMap);
// Instantiate the cluster manager algorithm as is done in the ClusterManager, so we can access cluster items themselves, rather than cluster markers
dis.cluster_manager_algorithm = new dis.clustering.algo.NonHierarchicalDistanceBasedAlgorithm();
dis.cluster_manager.setAlgorithm(dis.cluster_manager_algorithm);
var CustomClusterRenderer = dis.clustering.view.DefaultClusterRenderer.extend({
//constructor
init: function () {},
onBeforeClusterItemRendered: function (item, markerOptions) {
console.log("onBeforeClusterItemRendered");
},
onBeforeClusterRendered: function (cluster, markerOptions) {
console.log("onBeforeClusterRendered!!!!!!!!!!");
}
});
dis.cluster_renderer = new CustomClusterRenderer(app.android.context, dis.gMap, dis.cluster_manager);
dis.cluster_renderer.setMinClusterSize(1);
dis.cluster_manager.setRenderer(dis.cluster_renderer);
dis.gMap.setOnCameraIdleListener(dis.cluster_manager);
// must be called after every unit add/remove
dis.cluster_manager.cluster();
现在,我想听 "on cluster clicks" 和 "on cluster item clicks"。添加以下内容:
dis.gMap.setOnMarkerClickListener(dis.cluster_manager);
dis.cluster_manager.setOnClusterClickListener(new dis.clustering.ClusterManager.OnClusterClickListener({
onClusterClick: function(cluster) {
console.log("onClusterClick");
}
}));
dis.cluster_manager.setOnClusterItemClickListener(new dis.clustering.ClusterManager.OnClusterItemClickListener({
onClusterItemClick: function(item) {
console.log("onClusterItemClick");
}
}));
它编译并运行良好,也就是说,当我单击集群标记或集群项目标记时,我得到了适当的 console.log
,但在应用程序崩溃后我立即收到此错误:
java.lang.NullPointerException: Attempt to invoke virtual method
'boolean java.langBoolean.booleanValue()' on a null object reference
有什么想法吗?
太好了,浪费了 2 天时间,想知道为什么源代码中的函数该死的具有布尔类型:
public interface OnClusterClickListener<T extends ClusterItem> {
public boolean onClusterClick(Cluster<T> cluster);
}
事实证明,因为它需要一个布尔值。没脑子...
dis.cluster_manager.setOnClusterClickListener(new dis.clustering.ClusterManager.OnClusterClickListener({
onClusterClick: function(cluster) {
console.log("onClusterClick");
return true;
}
}));
用 Nativescript 编写应用程序。以下设置工作正常,没有错误:
// initialize cluster manager
dis.cluster_manager = new dis.clustering.ClusterManager(app.android.context, dis.gMap);
// Instantiate the cluster manager algorithm as is done in the ClusterManager, so we can access cluster items themselves, rather than cluster markers
dis.cluster_manager_algorithm = new dis.clustering.algo.NonHierarchicalDistanceBasedAlgorithm();
dis.cluster_manager.setAlgorithm(dis.cluster_manager_algorithm);
var CustomClusterRenderer = dis.clustering.view.DefaultClusterRenderer.extend({
//constructor
init: function () {},
onBeforeClusterItemRendered: function (item, markerOptions) {
console.log("onBeforeClusterItemRendered");
},
onBeforeClusterRendered: function (cluster, markerOptions) {
console.log("onBeforeClusterRendered!!!!!!!!!!");
}
});
dis.cluster_renderer = new CustomClusterRenderer(app.android.context, dis.gMap, dis.cluster_manager);
dis.cluster_renderer.setMinClusterSize(1);
dis.cluster_manager.setRenderer(dis.cluster_renderer);
dis.gMap.setOnCameraIdleListener(dis.cluster_manager);
// must be called after every unit add/remove
dis.cluster_manager.cluster();
现在,我想听 "on cluster clicks" 和 "on cluster item clicks"。添加以下内容:
dis.gMap.setOnMarkerClickListener(dis.cluster_manager);
dis.cluster_manager.setOnClusterClickListener(new dis.clustering.ClusterManager.OnClusterClickListener({
onClusterClick: function(cluster) {
console.log("onClusterClick");
}
}));
dis.cluster_manager.setOnClusterItemClickListener(new dis.clustering.ClusterManager.OnClusterItemClickListener({
onClusterItemClick: function(item) {
console.log("onClusterItemClick");
}
}));
它编译并运行良好,也就是说,当我单击集群标记或集群项目标记时,我得到了适当的 console.log
,但在应用程序崩溃后我立即收到此错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.langBoolean.booleanValue()' on a null object reference
有什么想法吗?
太好了,浪费了 2 天时间,想知道为什么源代码中的函数该死的具有布尔类型:
public interface OnClusterClickListener<T extends ClusterItem> {
public boolean onClusterClick(Cluster<T> cluster);
}
事实证明,因为它需要一个布尔值。没脑子...
dis.cluster_manager.setOnClusterClickListener(new dis.clustering.ClusterManager.OnClusterClickListener({
onClusterClick: function(cluster) {
console.log("onClusterClick");
return true;
}
}));