2013-03-27 48 views
0

我試圖使用mapsforge在我的手機上執行顯示地圖。。列表中的.add()方法不適用於參數

目前我在添加疊加到顯示引腳方面存在輕微問題。這是給出了一個錯誤代碼:

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

getOverlays()將返回列表,如前所述here

此行給出了這樣的錯誤:

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

這是我做的不真正理解的是爲什麼.add()方法在這種情況下是無效的,因爲ArrayItemizedOverlay類是Overlay類的子類。

這些是類定義,我希望有人可以啓發我可以做的事情,以便.add()方法將接受該對象。

ArrayItemizedOverlay

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

ItemizedOverlay

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

隨意地指出,你可能需要的任何缺少的信息,謝謝!

+0

我將類型轉換爲Overlay對象,但它不起作用。無論如何,我不應該強調它,否則我會失去子類 – lyk 2013-03-27 10:20:35

回答

0

使用List的方法addAll()添加對象的集合。

+0

的某些東西?????????我添加了一個對象,而不是一個對象集合。但無所謂,我確實addAll(),我仍然遇到同樣的問題 – lyk 2013-03-27 10:26:11

2

您是否能夠找出所使用的calsses和接口的完整路徑?

public List<Overlay> getOverlays() 

返回

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

列表,但代碼庫具有不同的覆蓋類

public abstract class Overlay extends Thread { 

有沒有在classpath中的舊版本?您可能必須清理舊的JAR/API,並確保它引用了正確的覆蓋類。

+0

對不起,也許我可能不那麼清楚。 Overlay,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 2013-03-27 10:40:46

+0

我認爲就是這樣。 Overlay是不一樣的。 – 2013-03-27 10:45:41

+0

我自己有另一個覆蓋類,org.mapsforge.android.maps.old.overlay.Overlay。那我該如何改變呢?在我的MapView類中getOverlays()是,我已經導入org.mapsforge.android.maps.old.overlay.Overlay(這是我正在使用的) – lyk 2013-03-27 10:54:34

相關問題