0

ShapeDrawable を拡張/サブクラス化しようとしています。結果は本当に困惑しています。私の単純なコードでは、小さな点と小さな三角形も作成する必要があります。実際、これらの形状は、それらが描画されるマップビューに表示されます。しかし、形状が少し異なる 2 番目の三角形も表示されており、その理由はわかりません。私の ShapeDrawable サブクラスが余分な三角形を作成するのはなぜですか?

スクリーンショットの例 --->> http://www.activemetrics.com/DrawableProb.png

    private class CustomDrawable extends ShapeDrawable
    {
        public CustomDrawable() //GeoPoint point, MapView mapView)
        {
        }

        public void draw(Canvas canvas)
        {
            canvas.drawCircle(0, 0, 2/*radius*/,    getPaint());
            Paint paint = new Paint();
            paint.setStyle(Paint.Style.STROKE);
            paint.setStrokeWidth(2);
            paint.setColor(Color.RED);
            Path path = new Path();
            path.reset();
            path.moveTo(0, -10);
            path.lineTo(5, 0);
            path.lineTo(-5, 0);
            path.close();
            path.offset(10, 40);
            canvas.drawPath(path, paint);
        }
    }   
4

1 に答える 1

0

多分この質問は難しすぎると思います。おそらく、このサブクラスの外のどこかで問題が発生しています。(ただし、ここで描画ロジックを削除するとゴーストトライアングルが消えるのは不思議ですが、実際に発生します。)とにかく、マップビューに追加する単一のオーバーレイを作成してから、描画メソッドをオーバーロードすることで、より良いエクスペリエンスを得ることができます。 ..。。

    private class MapOverlay extends com.google.android.maps.Overlay
    {
        @Override
        public boolean draw(Canvas canvas, MapView mapView,
        boolean shadow, long when)
        {
            super.draw(canvas, mapView, shadow);

            Bitmap bmp = BitmapFactory.decodeResource(
                    getResources(), R.drawable.ic_launcher);

            //---translate the GeoPoint to screen pixels---
            Point screenPts1 = new Point();
            mapView.getProjection().toPixels(p1, screenPts1);

            //---translate the GeoPoint to screen pixels---
            Point screenPts2 = new Point();
            mapView.getProjection().toPixels(p2, screenPts2);

            //---add the first marker---
            canvas.drawBitmap(bmp, screenPts1.x - bmp.getWidth()/2,
                                   screenPts1.y - bmp.getHeight()/2, null);

(...をちょきちょきと切る...)

于 2013-01-14T10:03:32.850 に答える