2017-12-23 11 views
0

Android Studio를 사용하여 Java로 앱을 프로그래밍하고 있습니다. osmdroid를 사용하여 이미지도를 표시하고 특정 위치에 마커를 표시하기 위해 몇 가지 오버레이를 추가했으며 마커에 설명을 추가했습니다 (&).Osmdroid : 마커 표시 및 숨기기를 클릭하십시오.

이제 setFocusItemsOnTap 메서드를 사용하여 클릭시 마커에 대한 설명 인 & 설명을 표시합니다. 내 문제는 두 번째 클릭에서 마커에 대한 설명이 표시되지 않는다는 것입니다 (이미 표시된 경우). 이 일을 할 수있는 방법이 있습니까?

또는 그게 가능하지 않다면 setFocusItemsOnTab 메서드를 사용하여 한 마커의 설명을 & 한 마디로만 표시 할 수 있습니까? 내가 다른 마커를 추가하고 싶어하고 나는 모두가 그들에 집중할 수 있기를 원하기 때문에

public static List<OverlayItem> items = new ArrayList<OverlayItem>(); 

//[...] 

items.add(new OverlayItem("uid1","Title", "Description", new GeoPoint(51.398,6.875))); 

//[...] 

List<OverlayItem> currentList; 
currentList = new ArrayList<OverlayItem>(); 
     currentList.add(items.get(i)); 

//[...] 

final ItemizedOverlayWithFocus<OverlayItem> mOverlay = new ItemizedOverlayWithFocus<OverlayItem>(this, currentList, new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() { 
       @Override 
       public boolean onItemSingleTapUp(final int index, final OverlayItem item) { 
        //here it should decide if the title & description is already shown or not. (true => hide it, false => display it) 
        return true; 
       } 
       @Override 
       public boolean onItemLongPress(final int index, final OverlayItem item) { 
        return false; 
       } 
     }); 

mOverlay.setFocusItemsOnTap(true); 

나는 코드의이 부분을 사용해야합니다. 또한 런타임 중에 동적 목록에 추가 할 수 있어야합니다.

도움 주셔서 감사합니다.

답변

1

ItemizedIconOverlay를 계속 사용하는 경우 한 번에 하나의 팝업 만 사용할 수 있다고 생각합니다. ItemizedIconOverlay의 하위 클래스를 만들고 한 번에 여러 항목의 팝업 렌더링을 지원하는 draw 메서드를 재정의해야합니다.

Marker 클래스를 사용하는 것이 더 좋을 것 같습니다. 이미 클릭하여 닫는 기능을 지원합니다. 다시 말하지만 한 번에 하나의 마커 팝업 만 표시 할 수 있습니다. 이는 각 마커에 대한 InfoWindow 인스턴스를 제공하여 재정의 할 수 있습니다.

+0

감사합니다. ItemizedOverlayWithFocus 대신 ItemizedIconOverlay를 사용하고 osmbonuspack을 사용하여 해결했습니다. – Steve

관련 문제