내 응용 프로그램 검색 및 시각적 오버레이. 그러나 다음 검색에서 오래된 오버레이는 분명하지 않습니다. map.getOverlays().clear();
을 사용해야하지만 오버레이는 MyLocationOverlay
도 제거됩니다. 동일한 오버레이 만 삭제하는 방법이 있습니까? 특정 오버레이를 제거해야 할 때지도에 오버레이를 추가지도에서 오버레이 제거
답변
, 당신은 당신이 같은 방식으로 제거 할 수 있습니다,
overlays.add(position, overlay_object);
그리고 특정 위치에 추가 할 수 있습니다
overlays.remove(position);
조금 늦었다는 것을 알고 있지만, 나에게 도움이되는 해결책이 떠올랐다. 미래의 프로그래머에게 도움이되도록 공유하고 싶다.
@ hooked82 : 문제가있다. 그냥
overlays.remove(position)
그 목록입니다. 그래서 당신이 목록에서 한 항목을 제거하면 목록의이 항목 오른쪽에있는 모든 항목이 한 곳 왼쪽으로 옮겨지면서 결국 자신의 위치를 엉망으로 만들어서 모든 것을 추적하는 것이 지루합니다 시각.
내 프로젝트 중 하나에서 같은 문제가 발생했습니다. 일부 업데이트가있을 때 오버레이를 추가하고 제거 했으므로 일정 시점이 지나면 오버레이 위치를 추적하기가 정말 어려웠습니다.
여기는 문제 해결을 위해 한 일이며, 지금까지 문제가 없습니다.
1 단계 : 당신이 오버레이를 처리하는 곳 MapClass에 : 사용자 정의 오버레이 클래스
public class MyOverlay extends Overlay
{
private String overlayUUID;
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
{
-- do what you need to do here --
}
public String getOverlayUUID()
{
return overlayUUID
}
}
2 단계를 만들 수 있습니다. 하나는 고유 UUID 각 오버레이를 식별 할 수 있으며, mapOverlays의 목록은 모든 mapOverlays
위의 방법으로 List<Overlay> mapOverlays = mapView.getOverlays();
public void removeChosenOverlay(String overlayUUID)
{
for(int i=0; i<mapOverlays.size(); i++)
{
String className = mapOverlays.get(i).getClass().getSimpleName();
if(className.equals("MyOverlay"))
{
MyOverlay myOverlay = (MyOverlay) mapOverlays.get(i);
if((myOverlay != null) && (myOverlay.getOverlayUUID.equals(overlayUUID)))
{
mapOverlays.remove(i);
mapView.invalidate()
break;
}
}
}
}
을 추가지도보기 클래스의 전역 목록이 있는지 확인하십시오 (내 경우에 문자열이었다 하지만 UUID를 원하는 형식으로 사용자 정의 할 수 있음) 목록에서 상대 위치에 대해 걱정할 필요없이 오버레이 목록에서 해당 오버레이 항목을 제거 할 수 있습니다.
동일한 문제가있는 다른 사용자가 고유 한 오버레이를 찾는 데 도움이되기를 바랍니다.
그리고 미래에 도움이된다면 답을 표시해주세요. 건배 .. !! – vivek86
당신은 당신이 내 경우 카운터에 을 제거 할 오래된 오버레이를 저장 current_overlay_counter이며, 1 일에 기존 오버레이 에 대한 참조를 얻을 old_overlay_item하는 카운터의 도움과 overlayItem 또 다른 참조하여이 작업을 수행 할 수있는 전화 카운터 그래서 당신은 한 가지 더 필요
public void getcurrentPostion()
{
GeoPoint gpoint=new GeoPoint((int)((current_location.getLatitude())*1E6),((int)((current_location.getLongitude())*1E6)));
OverlayItem overlayitem = new OverlayItem(gpoint, "Hola, Mundo!", "I'm in Mexico City!");
mapOverlays = map.getOverlays();
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
if(current_overlay_counter>0)
{
System.out.println("deleting overlay");
itemizedoverlay.removeOverlay(old_overlay_item);
map.invalidate();
}
old_overlay_item=overlayitem;
current_overlay_counter++;
map_controller.setCenter(gpoint);
}
제거 할 오버레이, 방법이 ItemizedOverlay 클래스 구현
이 방법 탁에서 오버레이를 제거 할 수 없다 0 삭제하려는 오버레이의 참조
public void removeOverlay(OverlayItem overlay){
mOverlays.remove(overlay);
System.out.println("removeOverlay is called");
populate();
}
- 1. 지도에서 오버레이 제거
- 2. 지도에서 값 제거
- 3. 지도에서 핀 번호를 설정하는 방법 핀 이미지
- 4. 지도에서 요소를 어떻게 뒤섞습니까
- 5. 지도에서 위치를 표시 asp.net
- 6. 지도에서 키 교환 방법?
- 7. 지도에서 오버레이를 제거합니다.
- 8. 지도에서 드로잉 경로를 android
- 9. 지도에서 내비게이션을 처리하는 방법
- 10. 지도에서 메모리를 해제합니다. C++
- 11. 지도에서 숫자 반복 및 계산
- 12. 오버레이?
- 13. 오버레이?
- 14. DirectX 오버레이 윈도우 내에서 오버레이
- 15. 오버레이 이미지가 다른 오버레이 이미지
- 16. 원본 이미지가 업데이트 된 후에 만 오버레이 이미지 제거
- 17. 지도에서 경로를 그리는 방법은 무엇입니까?
- 18. 지도에서 집합으로 Java 설정 값
- 19. 지도에서 어떻게 컬렉션에서? 자동 매퍼
- 20. 지도에서 java.text.Collator를 사용할 수 있습니까?
- 21. 지도에서 오버레이를 도청하는 동안 java.lang.NullPointerException이 발생했습니다.
- 22. Google지도 오버레이
- 23. Android지도 오버레이
- 24. UIView 오버레이
- 25. Google지도 오버레이
- 26. 오버레이 키보드?
- 27. 지도에서 내 항목 별 오버레이를 제어하는 방법은 무엇입니까?
- 28. 지도에서 마커를 사용하여 검색 결과를 페이징
- 29. 지도에서 다중 핀 놓기 Mapkit iPhone
- 30. 지도에서 핫스팟을 수행하는 좋은 방법은 무엇입니까
문제가 해결 된 경우 답을 표시해야합니다. – hooked82