2014-09-05 118 views
7

在我們的項目中,我們使用谷歌地圖v2,我需要找到一種方法來改變引腳圖標後點擊。此外,我需要返回該引腳的初始圖標,當另一個引腳將被點擊。 所以現在我們有這樣的事情:如何更改標記圖標它被挖掘的內容?

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); 

因此,可以爲這個人提供的解決方案? 謝謝!

回答

12

所以,我找到了解決方案 - 也許這也會有助於某人。

所以,首先,我們需要使用我們的自定義渲染器(從DefaultClusterRenderer繼承)。 DefaultClusterRenderer有自己的緩存,它包含對ClusterItem和相應的Marker

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

所以我在我們CustomClusterRenderer

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

它之後寫了一個方法,我已經加入到我們的片段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; 
    } 
}; 

就這樣,它就像一個魅力。

+0

我沒有使用你的答案,但它給了我一種方法來解決我的問題,thx那裏 – MiguelHincapieC 2016-08-25 21:56:51

+0

謝謝花花公子爲我工作。但是我沒有使用MarkerCache。 – 2017-09-02 11:09:04