2016-11-28 114 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