gpt4 book ai didi

android - 如何更改标记图标被点击的内容?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:33 25 4
gpt4 key购买 nike

在我们的项目中,我们使用 google maps v2,我需要找到一种方法来在点按图钉后更改图钉图标。此外,当另一个 pin 被点击时,我需要返回该 pin 的初始图标。所以现在我们有这样的东西:

public ClusterManager.OnClusterItemClickListener<OurClusterItem> mClusterItemClickListener = new ClusterManager.OnClusterItemClickListener<OurClusterItem>() {

@Override
public boolean onClusterItemClick(OurClusterItem item) {
// Some actions here
return true;
}
};

然后我们将此监听器设置为映射:

ClusterManager mClusterManager = new ClusterManager<OurClusterItem>(getActivity(), getMap());
mClusterManager.setOnClusterItemClickListener(mClusterItemClickListener);
googleMap.setOnMarkerClickListener(mClusterManager);

那么,有人可以为此提供解决方案吗?谢谢!

最佳答案

所以,我找到了解决方案 - 也许这也会对某人有所帮助。

因此,首先,我们需要使用自定义渲染器(继承自 DefaultClusterRenderer)。 DefaultClusterRenderer 有自己的缓存,其中包含成对的 ClusterItem 和相应的 Marker:

public MarkerCache<T> mMarkerCache = new MarkerCache<T>();

所以我在 CustomClusterRenderer 中编写了下一个方法

public Marker getMarker(OurClusterItem clusterItem) {
return mMarkerCache.get(clusterItem);
}

之后,我向我们的 fragment 添加了 2 个变量:

private Marker mCurrentSelectedMarker;
private ClusterStore mCurrentSelectedClusterItem;

并更改 ClusterItemClickListener 的实现:

public ClusterManager.OnClusterItemClickListener<OurClusterItem> mClusterItemClickListener = new ClusterManager.OnClusterItemClickListener<OurClusterItem>() {

@Override
public boolean onClusterItemClick(ClusterStore item) {
// return to previous marker non-selected icon
if (mCurrentSelectedMarker != null) {
mCurrentSelectedMarker.setIcon(BitmapDescriptorFactory.fromResource(mCurrentSelectedClusterItem.getIconResourceId()));
}
Marker marker = mCustomRenderer.getMarker(item);
if (marker != null) {
mCurrentSelectedMarker = marker;
mCurrentSelectedClusterItem = item;
marker.setIcon(BitmapDescriptorFactory.fromResource(item.getIconSelResourceId()));
}
// some other code
return true;
}
};

仅此而已,它就像一个魅力。

关于android - 如何更改标记图标被点击的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25684219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com