0

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);
4

1 に答える 1

0

なぜあなたが混乱しているのかは明らかではありません。OverlayItemドキュメントを見てください。コンストラクターは1つだけです。

public OverlayItem(GeoPoint point,
                   java.lang.String title,
                   java.lang.String snippet)

したがって、2番目のコンストラクター呼び出し(for item)は、ポイント、タイトル、およびスニペットを渡すので問題ありませんが、これは(for items):

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

コードを変更するだけでなく、一歩下がって、コンパイラエラーからこれを見つけられなかった理由を解明する必要があります。これにより、現在のコードが間違っている理由を理解するために必要なすべての情報が得られます。ただし、代わりに使用すべきクラスではないことは確かです。

于 2013-02-20T16:58:20.820 に答える