2013-03-27 5 views
0

저는 휴대 전화에서지도 표시를 위해 mapsforge를 사용하려고합니다.List의 .add() 메소드는 인수에 적용 할 수 없습니다.

현재 디스플레이 핀에 오버레이를 추가하는 것과 관련하여 약간의 문제가 있습니다. here

이 줄 언급 한 바와 같이,이 오류 목록을 반환합니다

ArrayItemizedOverlay itemizedOverlay = new ArrayItemizedOverlay(defaultMarker, true); 
myOpenMapView.getOverlays().add(itemizedOverlay); 

getOverlays() 제공합니다 : 내가하지 무엇 인

"The method add(Overlay) in the type List<Overlay> is not applicable for the arguments (ArrayItemizedOverlay)" 

이 오류를주는 코드입니다 ArrayItemizedOverlay 클래스가 Overlay 클래스의 하위 클래스이므로이 경우 .add() 메서드가 유효하지 않은 이유가 실제로 이해됩니다.

다음은 클래스 정의이며, 누군가가 내게 할 수있는 일을 알려 주어 .add() 메소드가 객체를 받아 들일 수 있기를 바랍니다.

ArrayItemizedOverlay

public class ArrayItemizedOverlay extends ItemizedOverlay<OverlayItem> { 
    //codes.... 
} 

ItemizedOverlay

public abstract class ItemizedOverlay<Item extends OverlayItem> extends Overlay { 
    //codes... 
} 

는 덕분에 당신이해야 할 수도 누락 된 정보를 지적 주시기 바랍니다!

+0

오버레이 개체에 캐스트를 입력해도 작동하지 않습니다. 어쨌든 나는 그것을 형변환하지 말아야한다. 아니면 하위 클래스에서 특정 물건을 잃을 것이다. – lyk

답변

0

목록의 addAll() 메서드를 사용하여 개체 컬렉션을 추가하십시오.

+0

????????? 하나의 객체가 아니라 객체의 컬렉션을 추가합니다. 하지만 문제가되지 않습니다, 나는 addAll()을했는데 여전히 같은 문제가 발생했습니다. – lyk

2

사용 된 calsses 및 인터페이스의 전체 경로를 찾을 수 있었습니까?

public List<Overlay> getOverlays() 

public interface org.mapsforge.android.maps.overlay.Overlay 

의 목록을 반환하지만 코드베이스는 다른 오버레이 클래스

public abstract class Overlay extends Thread { 

클래스 패스에 이전 버전이있다? 이전 JAR/API를 정리하고 올바른 오버레이 클래스를 참조해야합니다.

+0

죄송 합니다만 아마도 그만큼 명확하지 않을 수도 있습니다. 오버레이, ItemizedOverlay, ArrayItemizedOverlay 및 OverlayItem 클래스는 이전 버전 인 0.3.0이었습니다. 이것들은 https://code.google.com/p/mapsforge/source/browse/mapsforge-map/src/main/java/org/mapsforge/android/maps/overlay/Overlay.java?name=에서 찾을 수 있습니다. 0.3.0 – lyk

+0

나는 그것이 이것이라고 생각한다. 오버레이는 동일하지 않습니다. –

+0

다른 오버레이 클래스가 자체적으로 org.mapsforge.android.maps.old.overlay.Overlay 있습니다. 어떻게하면 이것을 바꿀 수 있습니까? getOverlays()가있는 MapView 클래스에서 이미 사용하고있는 org.mapsforge.android.maps.old.overlay.Overlay를 가져 왔습니다. – lyk