3

ここに画像の説明を入力してください

地図上に描いたピンの内側のテキストを表示する必要があります。Androidでこれを実装するにはどうすればよいですか。アイデアを教えてください。ピンを描画するために、MyItemizedオーバーレイクラスを使用しています。以下は私のクラスのコードです。

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {

    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

    public MyItemizedOverlay(Drawable defaultMarker, Context ctx) {
        super(boundCenterBottom(defaultMarker));

    }

    public void addOverlay(OverlayItem overlay) {
        mOverlays.add(overlay);
        populate();
    }

    public void clear() {

        mOverlays.clear();
        populate();
    }

    @Override
    protected OverlayItem createItem(int i) {
        return mOverlays.get(i);
    }

    @Override
    public int size() {
        return mOverlays.size();
    }

    @Override
    protected boolean onTap(int index) {
        return true;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event, MapView mapView) {

        return false;
    }

    @Override
    public void draw(Canvas canvas, MapView mapView, boolean shadow) {
        if (!shadow) {
            super.draw(canvas, mapView, false);
        }
    }

}

ありがとう..

4

2 に答える 2

2

このようなことをして、都合に合わせてテキストの位置とサイズを調整します

public void draw(Canvas canvas, MapView mapView, boolean shadow) 
{

super.draw(canvas, mapView, shadow);
    int n = size();
    Projection proj = mapView.getProjection();
    Point out;
    Paint paint = new Paint();
    paint.setTextSize(20);
    paint.setColor(Color.BLACK);
    for (int i = 0; i < n; i++) 
    {
    GeoPoint geoPoint = mOverlays.get(i).getPoint();
    out = new Point();
        proj.toPixels(geoPoint, out);
    canvas.drawText("" + i, out.x, out.y, paint);
    }
}
于 2012-10-15T10:35:49.173 に答える
0

'ItemizedOverlay'ごとに異なるドローアブルを提供する必要があります。

それか、その'ItemizedOverlay's'描画メソッドをオーバーライドして、描画可能オブジェクトに数値を描画しますか?

アイテム化されたオーバーレイの動的な描画については、このチュートリアルに従ってください。バルーンコールアウトですが、自分に合うようにカスタマイズできます。

于 2012-10-15T07:44:50.753 に答える