2014-09-05 11 views
7

Projemizde google maps v2 kullanıyoruz ve pimden sonra pim ikonunu değiştirmenin bir yolunu bulmam gerekiyor. Ayrıca, başka bir pin'e dokunulduğunda, bu pin için ilk simgeyi döndürmem gerekiyor. Şimdi biz böyle bir şey var:İşaretçi simgesi neye dokunduğunu nasıl değiştirebilirim?

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

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

ve sonra biz eşleştirmek için bu dinleyici ayarlayın: Bu Yani

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

, can birisi teklif çözümü? Teşekkürler!

cevap

12

Yani, bunun için çözüm buldum - belki bu da olacak birisi için yardımcı olur.

Yani, ilk başta, biz (DefaultClusterRenderer miras) bizim özel oluşturucusunu kullanmak gerekir. DefaultClusterRenderer kendi ClusterItem çiftleri içeren önbellek ve Marker tekabül vardır:

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

yüzden bunun ardından bizim CustomClusterRenderer

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

sonraki yöntemi yazdım, bizim 2. parça değişkenlere ekledik: ClusterItemClickListener için

private Marker mCurrentSelectedMarker; 
private ClusterStore mCurrentSelectedClusterItem; 

ve değişim uygulaması:

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

Hepsi bu, ve bir çekicilik gibi çalışır.

+0

Cevabını kullanmıyordu ama onun orada – MiguelHincapieC

+0

teşekkürler benim için onun çalışma dude thx bana sorunu çözmek için bir yol verdi. Ancak MarkerCache kullanmamıştım. –

İlgili konular