2013-03-27 71 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

相关问题