2015-03-30 3 views
2

Я хочу изменить значок маркера карты только тогда, когда он выбран.Изменение значка маркера Google Карт при его выборе

Я применил класс GoogleMap.OnMarkerClickListener в своем классе Fragment.

public class MapFragment extends SupportMapFragment implements GoogleMap.OnMarkerClickListener{ 

.... 

    @Override 
    public boolean onMarkerClick(Marker marker) { 
    marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.placemarker_pressed)); 
    return false; 
    } 
} 

Он меняет значок маркера при нажатии. Как я могу установить его обратно на исходный значок, когда он не выбран?

+0

Кажется, вам нужно какое-то 'onTouchListener() 'вместо' onClickListener() ', чтобы вы могли отслеживать тип действия, выполняемого над маркером. Проверьте документы, чтобы убедиться, что они существуют. – Quark

ответ

7

Реализовать также GoogleMap.OnMapClickListener интерфейса и создать приватную переменный для хранения текущих выбранных маркеров:

private Marker mSelectedMarker; 

Тогда:

@Override 
public boolean onMarkerClick(Marker marker) { 
    if (null != mSelectedMarker) { 
     mSelectedMarker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.placemarker)); 
    } 
    mSelectedMarker = marker; 
    mSelectedMarker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.placemarker_pressed)); 
    return false; 
} 

@Override 
public boolean onMapClick(LatLng latLng) { 
    if(null != mSelectedMarker) { 
    mSelectedMarker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.placemarker)); 
    } 
    mSelectedMarker = null; 
} 
+0

Если для выбора карты выбрано более одного маркера, восстанавливается только последний выбранный маркер. – mustafa

+0

В этом случае вы можете создать список «маркеров» и отменить выбор всех из них. – skywall

+0

Я обновил код в методе onMarkerClick(). Поэтому, если маркер уже выбран, вы сначала меняете свой значок, а затем обновляете вновь выбранный значок маркера. – Blehi

Смежные вопросы