Android获取未聚集的标记

Android获取未聚集的标记,android,google-maps,google-maps-api-3,android-maps-v2,android-maps-utils,Android,Google Maps,Google Maps Api 3,Android Maps V2,Android Maps Utils,我正在开发一个android应用程序,我正在使用 更具体地说,我正在使用该库的集群部分。现在我的问题是: 我对地图上显示的标记感兴趣,但这些标记目前尚未聚集。我试过不同的东西,但都没办法。这样做的目的是将所有渲染的标记项保存在arraylist中,然后将标记位置与屏幕上地图的LatLng边界进行比较,如果标记位于屏幕边界内,则标记信息将添加到不同的arraylist中,以便稍后在列表视图中显示。问题是当我缩小时,标记仍然在renderedPersonItems数组中,即使这些标记现在已聚集,也会

我正在开发一个android应用程序,我正在使用

更具体地说,我正在使用该库的集群部分。现在我的问题是:

我对地图上显示的标记感兴趣,但这些标记目前尚未聚集。我试过不同的东西,但都没办法。这样做的目的是将所有渲染的标记项保存在arraylist中,然后将标记位置与屏幕上地图的LatLng边界进行比较,如果标记位于屏幕边界内,则标记信息将添加到不同的arraylist中,以便稍后在列表视图中显示。问题是当我缩小时,标记仍然在renderedPersonItems数组中,即使这些标记现在已聚集,也会显示在listview中。我无法清除renderedPersonItems数组,因为标记在生命周期中只渲染一次。所以我在寻找一个不同的解决方案。到目前为止,我得到的是:

DefaultClusterRenderer中的代码:

@Override
protected void onBeforeClusterItemRendered(PersonItem personItem, MarkerOptions markerOptions){
    markerOptions.title(personItem.personName);

    if(!renderedPersonItems.contains(personItem)){
        renderedPersonItems.add(personItem);
    }
}
主要活动中的代码:

LatLngBounds personOnScreenBounds = googleMap.getProjection().getVisibleRegion().latLngBounds;

for(PersonItem person : clusterPersonRenderer.getRenderedPersonItems()){
   if(PersonsOnScreenBounds.contains(person.getPosition())){
     personMarksOnScreen.add(getPersonObjectWithId(person.personId));
   }
}

提前谢谢

如果要执行不同的任务,可能需要在群集标记和单个标记上生成不同的onClick事件:

此方法将处理对集群项目的单击

public boolean onClusterClick(Cluster<Person> cluster) {
    // Show a toast with some info when the cluster is clicked.
    Toast.makeText(getActivity(), cluster.getSize() + " (including " + itemText + ")", Toast.LENGTH_SHORT).show();
    return true;
}

我可以向您推荐另一个很酷的android地图库。Android地图扩展

我在我的应用程序中使用它,它看起来很好。在你的应用程序中重新实现它可能并不容易,但你可以试试

要解决您的问题,您可以这样做:

List<Marker> markers = mMap.getDisplayedMarkers();
for (Marker marker : markers) {
    if(!marker.isCluster()) {
        //
    }
}
List markers=mMap.getDisplayedMarkers();
用于(标记:标记){
如果(!marker.isCluster()){
//
}
}

在这种情况下,我不希望执行不同的点击任务。我只是在寻找未聚集但在屏幕范围内的标记。我现在已经签出了该库,它似乎拥有我需要的所有内容,现在我需要找一些时间重写我的代码,谢谢!)
List<Marker> markers = mMap.getDisplayedMarkers();
for (Marker marker : markers) {
    if(!marker.isCluster()) {
        //
    }
}