2013-06-18 72 views
0

我想跟蹤地圖上的標記。點擊特定標記時,我需要顯示與該標記相關的信息。Android中的HashMap <String,Marker>問題

我使用一個HashMap的變量來跟蹤添加到地圖上的標記。

for (int i = 0; i <= PropertyStub.size() - 1; i++) { 
     final LatLng MeanLatLng = new LatLng(PropertyStub.get(i).Latitude, 
       PropertyStub.get(i).Longitude); 

     if (!visibleMarkers.containsKey(PropertyStub.get(i).PropertyID)) { 
      visibleMarkers 
        .put(PropertyStub.get(i).PropertyID, 
          this.map.addMarker(new MarkerOptions() 
            .position(MeanLatLng) 
            .title("Property") 

            .icon(BitmapDescriptorFactory 
              .fromResource(R.drawable.pink_outside_marker)))); 

     } 
    } 

當我點擊了特定的標記,我需要的是,物業ID值點擊標記,

public boolean onMarkerClick(Marker marker) { 

    marker.showInfoWindow(); 
    tvPropertyID.setText("" + visibleMarkers.get(marker)); 

    return true; 
} 

但我正在逐漸「visibleMarkers.get(標誌)」無效。 infowindow上顯示一個空字符串。 我在哪裏做錯了?請糾正我。請爲我提供一個有用的鏈接。

在此先感謝!

+1

'visibleMarkers.get(marker)' - 不是你的鑰匙串嗎?它不應該更像'visibleMarkers.get(PropertyID)'嗎?假設PropertyID是一個字符串 –

回答

1

「visibleMarkers.get(標記)」,因爲你的密鑰字符串,而不是標記爲空。

在這裏你填充地圖:

visibleMarkers.put(PropertyStub.get(i).PropertyID, ...); 

假設物業ID是一個字符串,那麼當然visibleMarkers.get(標記)將是無效的,因爲你沒有得到正確的密鑰。

聽起來像您需要標記 - >字符串的HashMap,因爲您似乎需要查找給定MarkerString值。將您的數據結構更改爲HashMap<Marker,String>,然後從中取出。

+0

這是我如何實例化HashMap的方式:HashMap visibleMarkers = new HashMap (); – Mahe

+0

這不是您要查找的數據結構!將其更改爲:'HashMap visibleMarkers = new HashMap ();'當然在您的'put'語句中翻轉參數。 –

+0

是的!有區別。謝謝!! – Mahe

相關問題