Android 比较标记后,无法从标记数组以及地图中删除标记';带有从FirebaseDatabase获取的字符串的标题

Android 比较标记后,无法从标记数组以及地图中删除标记';带有从FirebaseDatabase获取的字符串的标题,android,firebase,firebase-realtime-database,google-maps-markers,google-maps-android-api-2,Android,Firebase,Firebase Realtime Database,Google Maps Markers,Google Maps Android Api 2,我正在地图上添加一些(2-13)标记。标记不会一次全部添加,而是从Firebase监听数据更改,如果添加了新用户,则会在地图上添加一个带有其位置的标记 以下是方法: public void addMarkers() { mMap.clear(); vMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(vLat), Double.parseDouble(

我正在地图上添加一些(2-13)标记。标记不会一次全部添加,而是从
Firebase
监听数据更改,如果添加了新用户,则会在地图上添加一个带有其位置的标记

以下是方法:

public void addMarkers() {
        mMap.clear();
        vMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(vLat), Double.parseDouble(vLng))).title("Title" + v.trim()).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
        markersList.add(venueMarker);
        for (int i=0; i<nP.size(); i++) {
            pMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(Double.valueOf(cLatP.get(i)), Double.valueOf(cLngP.get(i)))).title(nP.get(i).trim()).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
            markersList.add(pMarker);
        }
}
My logic/algorithm:下面是我试图获取可用的
pName
并尝试将其与可用的
pMarker
的标题匹配,如果匹配,则不应删除pMarker,如果没有字符串等于
pMarker
的标题,则应删除此标记

以下是数据结构的外观:

-app
  -child
    -rID
      -uniqueID1
        -userID1
          -key: value
          -key: value
          -pName: value1
          -currentLat: value1
          -currentLng: value1
      -uniqueID2
        -userID2
          -key: value
          -key: value
          -pName: value2
          -currentLat: value2
          -currentLng: value2
      -uniqueID3
        -userID3
          -key: value
          -key: value
          -pName: value2
          -currentLat: value2
          -currentLng: value2
问题在于不是标题不等于
ArrayList pA
中任何可用字符串的
标记
,而是删除了最新添加的标记

因此,如何删除标题不等于
ArrayList pA
中任何可用字符串的标记


请原谅我的问题不太清楚,但我已经用最好的方式描述了它。如果您能给我一个更好、更简单的方法来实现我在这里想要的,我将不胜感激。

您实际上需要先填充整个标题列表,然后遍历所有标记

然后,在遍历标记时,检查标题列表是否包含标记的标题。如果没有,请将其拆下

这应该起作用:

// below is how I'm trying to remove markers
// First, populate the title list
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
  Map<String, String> map = (Map<String, String>) childSnapshot.getValue();
  pA.add(map.get("pName"));
}

// Then, iterate through the Markers
// Remove the Markers whose title is not contained in the title list
if (markersList.size() > 0) {
  for (int i = 0; i < markersList.size(); i++) {
    Marker m = markersList.get(i);
    if (!pA.contains(m.getTitle())) {
        m.remove();
    }
  }
} 
//下面是我如何尝试删除标记的
//首先,填充标题列表
对于(DataSnapshot childSnapshot:DataSnapshot.getChildren()){
Map Map=(Map)childSnapshot.getValue();
pA.add(map.get(“pName”));
}
//然后,遍历标记
//删除标题不包含在标题列表中的标记
如果(markersList.size()>0){
对于(int i=0;i
在您的代码中,如果标记的标题不等于pA中的任何一个字符串,则删除标记。也就是说,要不删除标记,它必须等于所有字符串谢谢!你也可以看看这里吗:我可以在这里得到一些相关问题的帮助吗:
// below is how I'm trying to remove markers
// First, populate the title list
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
  Map<String, String> map = (Map<String, String>) childSnapshot.getValue();
  pA.add(map.get("pName"));
}

// Then, iterate through the Markers
// Remove the Markers whose title is not contained in the title list
if (markersList.size() > 0) {
  for (int i = 0; i < markersList.size(); i++) {
    Marker m = markersList.get(i);
    if (!pA.contains(m.getTitle())) {
        m.remove();
    }
  }
}