2016-11-28 196 views
0

我有这个微不足道的问题。我有Listener方法,它会监听标记。当某人更改位置时,它会触发侦听器方法,然后触发onLocationLoaded()方法并传递MarkerOption对象,该对象具有所有位置和其他详细信息。现在我的问题是将这个MarkerOption markersReceived对象保存在具有特殊ID的Marker对象中,以便稍后我可以通过此ID找到它们,以便在相同MarkerOption的位置更新时从该映射中单独删除它们。对于唯一的ID我已经将它保存在MarkerOption的标题中。删除地图上的多个标记与更新的标记

因此,这里是我的代码

final Marker[] markerTrack = new Marker[3]; 
final String[] idTrack = new String[3]; 
public void onLocationLoaded(MarkerOptions markersReceived) { 
    if(markersReceived != null) { 
    /// Check if marker is implemented if yes then remove and overwrite exixting else make new array 

     for(int i =0 ; i < markerTrack.length; i++){ 
      if(idTrack[i] == markersReceived.getTitle()){ 
       markerTrack[i].remove(); 
       markerTrack[i] = mMap.addMarker(markersReceived); 

      }else{ 
       //make new marker 
       markerTrack[i] = mMap.addMarker(markersReceived); 
       idTrack[i] = markersReceived.getTitle(); 
      } 
     } 

所以在这里onLocationLoaded(MarkerOptions markersReceived)方法它接收多个对象的MarkerOptions,问题是要找出相似的对象,并在地图上对其进行更新,并从地图中删除一个标记。这个删除的东西正在窃听我地图充满了新的和以前的标记

PS mMap.clear()没有帮助。反正Thanx提前帮助。

+0

你在删除已经添加的标记时遇到了问题,因为当你比较标题时你没有与字符串文本进行比较,代码是字符串的对象比较,因此不匹配,请检查readyandroid的答案。 –

+0

@ReadyAndroid我终于明白了....感谢你的努力 – Oswald

回答

0

您此行代码应该是这样的:

if(idTrack[i].equalsIgnoreCase(markersReceived.getTitle()){ 

更新和检查,是它的工作或没有?

+0

没有其实它没有解决我的目的......但我终于找到了 – Oswald

1

首先,我要感谢大家的努力。我最终找到了解决我的多重标记的方法,独立删除它们并更新它们。

这里是帮我实现这个

 final Marker[] markerTrack = new Marker[4]; 
      //final String[] idTrack = new String[3]; 
      final ArrayList<String> id = new ArrayList<String>(); 
      id.add("HELLO"); 
      final int[] i = {0}; 
. . . .. . . 
.... 
.... 
    @Override 
public void onLocationLoaded(MarkerOptions markersReceived) { 
    if (markersReceived != null) { 
     if (id.contains(markersReceived.getTitle())) { 
      int j = id.indexOf(markersReceived.getTitle()); 
      markerTrack[j].remove(); 
      markerTrack[j] = mMap.addMarker(markersReceived); 
    } else { 
      markerTrack[i[0]+1] = mMap.addMarker(markersReceived); 
      id.add(markersReceived.getTitle()); 
      i[0]++; 
     } 
    } 

但是,大家好我现在遇到一个问题的逻辑...这是我的任务异步包含另一个异步方法,它需要太多的时间在负载从结果网络...有没有什么办法可以加快这个过程... Thanx