我正在浏览一个Web服务教程并遇到了我无法解决的最后一个错误。
调用构造函数OverlayItem(Drawable)未定义时,我在itemOverlay对象上收到错误。
我真的不明白,因为我正在向构造函数提供相关数据,我不能相信构造函数不需要传递任何值吗?
这是发生错误的方法:
MapActivity mapAct = (MapActivity)ctx;
MapView map = (MapView)mapAct.findViewById(R.id.map);
map.setScrollBarStyle(MapView.SCROLLBARS_INSIDE_INSET);
map.setBuiltInZoomControls(Boolean.TRUE);
map.displayZoomControls(Boolean.TRUE);
GeoPoint point = new GeoPoint((int)(geoName.lat * 1E6), (int)(geoName.lng * 1E6));
MapController mc = map.getController();
mc.setZoom(17);
mc.setCenter(point);
mc.animateTo(point);
List<Overlay> overlays = map.getOverlays();
overlays.clear();
***** ERROR on constructor*****
OverlayItem items = new OverlayItem(ctx.getResources().getDrawable(R.drawable.marker));
OverlayItem item = new OverlayItem(point, geoName.placeName, "" + geoName.postalCode);
items.addOverlay(item);
overlays.add(items);
答案 0 :(得分:0)
目前尚不清楚你为什么感到困惑。查看OverlayItem
documentation,只有single constructor:
public OverlayItem(GeoPoint point,
java.lang.String title,
java.lang.String snippet)
所以你的第二个构造函数调用(对于item
)很好,因为它传递了一个点,标题和片段,但是这个(对于items
):< / p>
new OverlayItem(ctx.getResources().getDrawable(R.drawable.marker))
正在尝试只是传递一个Drawable
...并且没有构造函数具有
// This doesn't exist!
public OverlayItem(Drawable drawable)
鉴于您的其余代码,我怀疑您实际上想要ItemizedOverlay
:
ItemizedOverlay items = new ItemizedOverlay(ctx.getResources().getDrawable(R.drawable.marker));
您应该退后一步,找出为什么您没有从编译器错误中发现这一点,而不仅仅是更改您的代码。它为您提供了解当前代码错误所需的所有信息 - 尽管不是您应该使用的类。