2014-05-14 5 views
12

GoogleMaps 클러스터링을 사용하고 있습니다. 4 가지 다른 유형의 표식이 있으며 각각은 하나의 추상 클래스에서 확장되며 각 표제는 owm 아이콘을 가지며 MarkerOptions 필드에 정의됩니다. 나는이 추상적 인 클래스를 위해 ClusterManager를 사용한다. 방금 ​​사용했을 때Google지도에서 클러스터러의 아이콘에 대한 내 자신의 아이콘을 설정하는 방법

//marker is instance of one of extended classes and has abstract class type 
clusterManager.addItem(marker); 

클러스터링 후 아이콘이 기본값으로 설정됩니다. 어떻게 해결할 수 있을까요? 나는 다음과 같은 것을 사용하려고했습니다 :

//marker is abstract marker, getMarker returns the MarkerOptions of this marker 
clusterManager.getMarkerCollection().addMarker(marker.getMarker()); 

그러나 작동하지 않습니다. 마커는 맵상에 필요한 아이콘으로 인쇄되지만 클러스터링은하지 않습니다.

내 추상 클래스에서 일부 메소드를 생성해야합니까? 아니면 DefaultClusterRenderer에서 확장 할 수있는 방법이 있습니까? Google 또는 Google지도를 사용하여 lib에 대한 정보를 찾지 못했습니다.

도와 주셔서 감사합니다.

답변

22

내 바보 같았습니다. 다시 말하지만, 제가 도서관을 공부하면서 더 많은 관심을 기울여야한다는 것을 보여줍니다. 만약 누군가가 대답에 관심이 있다면 여기에 있습니다 : 저는 DefaultClusterRenderer에서 어떤 메소드를 오버라이드해야한다고 가정했습니다. 그래서, 전체 방법 : 자신의 클래스를 만들고 DefaultClusterRenderer에서 연장 :

public class OwnIconRendered extends DefaultClusterRenderer<AbstractMarker> 

이 그런 방법 onBeforeClusterItemRendered 오버라이드 (override) :

@Override 
protected void onBeforeClusterItemRendered(AbstractMarker item, 
     MarkerOptions markerOptions) { 
    markerOptions.icon(item.getMarker().getIcon()); 
} 

방법은 오히려 간단하다, 그러나 그것은 것을 나에게 보인다 클러스터링이 더 느리게 작동하기 시작했습니다. 그래서 충분합니다.

+0

더 많은 코드를 게시 할 수 있습니까? 덕분에 – delive

+2

나는 그것이 너무 늦었다 고 생각하지만, 미래를 위해 여기를보실 수 있습니다 http://stackoverflow.com/questions/27745299/how-to-add-title-snippet-and-icon-to-clusteritem/27745681# 27745681 –

+0

제 경우에는'super(). onBeforeClustererItemRendered'를 호출해야했습니다. – murt

관련 문제