Overlayitem对象构造函数未定义

时间:2013-02-20 16:53:55

标签: java android web-services google-maps

我正在浏览一个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);

1 个答案:

答案 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));

您应该退后一步,找出为什么您没有从编译器错误中发现这一点,而不仅仅是更改您的代码。它为您提供了解当前代码错误所需的所有信息 - 尽管不是您应该使用的类。