2013-08-07 4 views
1

클러스터링을 위해 android-maps-extensions으로 이동했습니다. 하지만 런타임 중에 마커 아이콘을 변경하고 싶습니다. 원래 Google지도에서 lib 표식에는 setIcon 메소드가 있는데, 이는 lib 디렉토리에 없습니다. 메서드를 Marker 구현에 추가하는 것이 가능합니까? 아니면 아이콘을 변경하는 대신 마커를 삭제하고 새 메서드를 추가하는 등의 다른 해결 방법을 찾아야합니까?android-maps-extensions를 사용하여 마커 아이콘 변경

답변

0

버전 1.3.1 프로젝트 사이트에서 직접 다운로드 할 수 있으며 setIcon이 추가되지 않았습니다.

커브 상태가 버전 1.4이고 약 setIconsetAnchor이 포함될 예정입니다. code.google.com에 zip 파일을 업로드 할 때 몇 가지 문제가 있습니다. https://github.com/mg6maciej/android-maps-extensions/archive/master.zip

setIcon 것으로 만 Marker의 당신이지도에 추가를 위해 작동합니다 : 당신이 저장소를 복제하는 자식을 사용하지 않으려면

, 당신은 GitHub의의의 repo에서 최신 버전을 잡아 수 있습니다. 이제 클러스터 아이콘을이 방법으로 변경할 수 없습니다.

편집 :

@Override 
public void setIcon(BitmapDescriptor icon) { 
    if (virtual != null) { 
     virtual.setIcon(icon); 
    } 
} 

대부분의 경우에 작동합니다 :

같은 것으로

@Override 
public void setIcon(BitmapDescriptor icon) { 
    throw new UnsupportedOperationException(); 
} 

에서 ClusterMarker.setIcon 코드를 변경.

+0

작동. 클러스터 마커에 대해서도이를 달성하는 방법은 무엇입니까? 아마'IconDataProvider'가 그것에 사용될 수 있을까요? – comatic

+0

@comatic 아이콘을 변경하려는시기에 따라 다릅니다. '마커 (Marker)'클러스터가 생성 된 후라면 편집을 참조하십시오. –

0

당신은

이렇게 사용자 정의 클러스터링 아이콘 ..........

for (Cluster cluster : clusterList) { 

    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inMutable = true; 
    options.inPurgeable = true; 
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 
      R.drawable.cluster_marker, options); 

    Canvas canvas = new Canvas(bitmap); 

    Paint paint = new Paint(); 
    paint.setColor(getResources().getColor(R.color.white)); 
    paint.setTextSize(30); 

    canvas.drawText(String.valueOf(cluster.getMarkerList().size()), 10, 
      40, paint); 

    googleMap.addMarker(new MarkerOptions() 
      .position(
        new LatLng(cluster.getClusterLatitude(), cluster 
          .getClusterLongitude())) 
      .snippet(String.valueOf(cluster.getMarkerList().size())) 
      .title("Cluster") 
      .icon(BitmapDescriptorFactory.fromBitmap(bitmap))); 

} 

클러스터 마커 내 당김이고 나는 그 위에 텍스트를 쓰고 있어요 달성하고자하는 경우 .