안드로이드에서 클러스터하고 싶은 약 800 개의 마커와 클러스터하고 싶지 않은 마커가있는 Google Maps를 사용하고 있습니다. 내가 클러스터하려는 마커를 들어 클러스터되지 않은 마커 용 ClusterManager onMarkerClickListener
, 나는 내가 클러스터하지 않을 마커를 들어mClusterManager.addItem(annotation);
사용하여 clusterManager에 추가, 나는 markerCollection
Marker marker = mClusterManager.getMarkerCollection().addMarker(annotation.getMarkerOptions());
에 직접 추가 여기
annoation
는 ClusterItem
을 구현하는 클래스 정의는 AirMapMarker 인스턴스를 지칭에는 사용자가 마커를 탭할 때 사용해야하는 식별 문자열과 같은 사용자 정의 정보가 들어 있습니다.
문제는 클러스터와 mapMarker 모두에 onClickListener를 등록 할 수 없다는 것입니다. 그렇게하면지도의 onMarkerClickListener 만 실행됩니다. 마커 클릭이 하나의 클러스터되지 않은 마커 일어난 경우
map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
// Handle marker click fires correctly.
}
}
mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<AirMapMarker>(){
public boolean onClusterItemClick(AirMapMarker marker) {
// Doesn't Fire
}
}
이제 문제는 onMarkerClick 내부에, 나는 경우, AirMapMarker의 일부입니다 식별에 액세스 할 필요가있다. Marker
을 AirMapMarker
에 onMarkerClick
안에 매핑하는 방법을 찾지 못했습니다.
또한 map.setOnMarkerClickListener
을 완전히 제거하고 mClusterManager.setOnClusterItemClickListener
에만 의존했습니다. 그러나 문제는 클러스터의 일부가 아닌 마커에서 마커 클릭이 발생하면 null
으로 onClusterItemClick
이 발생한다는 것입니다. 이는 마커를지도에 추가 할 때 clusterItem 객체가 아니라 markerOptions를 제공하기 때문입니다.
클러스터 관리자에는 클러스터링을 해제하는 옵션이 있지만 이것은 특정 마커가 아닌 전체적으로 발생합니다.
누구나 다음에 시도해야 할 사항에 대해 도움을 주시겠습니까?