我正在开发一个 android 应用程序,我正在使用Google Maps Android API Utility Library。
更具体地说,我正在使用该库的集群部分。现在我的问题:
我对地图上显示但当前未聚集的标记感兴趣。我尝试了不同的东西,但无法理解它。这种工作方式是将所有渲染的标记项保存在数组列表中,然后将标记位置与屏幕上地图的 LatLng 边界进行比较,如果标记在屏幕边界内,则标记信息将添加到不同的数组列表中稍后显示在列表视图中。问题是当我缩小时,标记仍位于renderPersonItems数组中,即使这些标记现在已聚集,也会显示在列表视图中。我无法清除renderPersonItems数组导致标记在生命周期中仅呈现一次。所以我正在寻找不同的解决方案。这是我到目前为止得到的:
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));
}
}
提前致谢!