【问题标题】:Changing the icon of Google Maps marker while it's selected在选择时更改谷歌地图标记的图标
【发布时间】:2015-03-30 22:28:11
【问题描述】:

我只想在地图标记被选中时更改它的图标。

我在 Fragment 类中实现了 GoogleMap.OnMarkerClickListener 类。

public class MapFragment extends SupportMapFragment implements GoogleMap.OnMarkerClickListener{

....

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

单击时它会更改标记图标。未选中时如何将其恢复为原始图标?

【问题讨论】:

  • 似乎您需要某种onTouchListener() 而不是onClickListener(),以便您可以跟踪在标记上执行的操作的类型。检查文档以查看是否存在。

标签: android google-maps google-maps-markers


【解决方案1】:

同时实现 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;
}

【讨论】:

  • 如果在点击地图之前选择了多个标记,则仅恢复最后选择的标记。
  • 在这种情况下,您可以创建markers 列表并取消选择所有这些。
  • 我已经更新了 onMarkerClick() 方法中的代码。因此,如果已经选择了一个标记,那么您首先将其图标更改回正常状态,然后您也可以更新新选择的标记图标。
  • 我有四个带有四个不同图标的标记。如果我单击一个它应该选择一个特定的图标,如果我单击另一个标记,则应该取消选择前一个标记,并且应该选择当前图标及其特定图标,依此类推。请你帮助我好吗? @Blehi
  • 但这在简历片段之后不起作用,正如谷歌所说,我们不应该继续引用标记。恢复后 mSelectedMarker 出现问题,任何操作后都无法更新。
猜你喜欢
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 2012-01-02
相关资源
最近更新 更多