2013-06-18 39 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

相关问题