2013-06-18 5 views
0

Я хочу отслеживать маркеры на карте. Когда щелкнут конкретный маркер, мне нужно отобразить информацию относительно этого маркера.Проблема с HashMap <String, Marker> in android

Я использую одну переменную 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)))); 

     } 
    } 

Когда я нажал на конкретных маркерах, мне нужно значение PropertyID этого щелкнуло маркер,

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 (marker)" имеет значение null, поскольку ваши ключи являются строками, а не маркерами.

Здесь вы заселить карту:

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

Предполагая, что PropertyID является String, то, конечно, visibleMarkers.get (маркер) будет нулевым, так как вы не получаете правильный ключ.

Похоже, вам нужен HashMap из маркеров-> Строки, поскольку вам необходимо найти значение String для данного Marker. Измените структуру данных на HashMap<Marker,String> и возьмите ее оттуда.

+0

Так я создал экземпляр HashMap: HashMap visibleMarkers = new HashMap (); – Mahe

+0

Это не структура данных, которую вы ищете! Измените его так: 'HashMap visibleMarkers = new HashMap ();' и, конечно, переверните параметры в вашем 'put' -запросе. –

+0

Да! Получил разницу. Благодаря!! – Mahe