0

Google マップで作業しており、2 点間に線を引きたいです。このサイトのユーザーの質問から次のコードを使用しましたが、うまくいきませんでした。内部でこの関数を削除すると、強制的に閉じられます。アプリケーションが動作するクラス

でも線を引かなければならないので必要です

私が使用したコードは次のとおりです。

    class MyOverlay extends com.google.android.maps.Overlay {
    GeoPoint [] geoPointsArray ;
// constructor 
public MyOverlay(){

    }   

@Override 
public void draw(Canvas canvas, MapView mapv, boolean shadow){
    super.draw(canvas, mapv, shadow);

    Paint   mPaint = new Paint();
    mPaint.setDither(true);
    mPaint.setColor(Color.RED);
    mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
    mPaint.setStrokeJoin(Paint.Join.ROUND);
    mPaint.setStrokeCap(Paint.Cap.ROUND);
    mPaint.setStrokeWidth(2);

    GeoPoint gP1 = new GeoPoint(19240000,-99120000);
    GeoPoint gP2 = new GeoPoint(37423157, -122085008);

    Point p1 = new Point();
    Point p2 = new Point();
    Path path = new Path();

    projection.toPixels(gP1, p1);
    projection.toPixels(gP2, p2);

    path.moveTo(p2.x, p2.y);
    path.lineTo(p1.x,p1.y);

    canvas.drawPath(path, mPaint);
}

}// 内部クラスの終わり

私は本当に助けが必要です.これを追加するだけで強制終了しました:S

4

2 に答える 2

1

これを試して、オーバーレイに 1 つまたは複数のポイントを追加し、それらを赤色で塗りつぶします。

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

        Paint mPaint = new Paint();
        mPaint.setDither(true);
        mPaint.setStyle(Style.FILL_AND_STROKE);
        mPaint.setColor(Color.RED);
        mPaint.setAlpha(9);
        mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        mPaint.setStrokeCap(Paint.Cap.ROUND);
        mPaint.setStrokeWidth(2);

        Path path = new Path();

        Projection projection = mapView.getProjection();

        for(int j = 0; j < geoArrayist.size(); j++) 
        {
            Iterator<GeoPoint> it = geoArrayist.iterator();
            while(it.hasNext()) 
            {
                GeoPoint arrayListGeoPoint = it.next();

                Point currentScreenPoint = new Point();
                projection.toPixels(arrayListGeoPoint, currentScreenPoint);

                if(j == 0)
                    path.moveTo(currentScreenPoint.x, currentScreenPoint.y); 
                else
                    path.lineTo(currentScreenPoint.x, currentScreenPoint.y);
            }                 
        }
        // old_geopoint = new_geopoint;
        canvas.drawPath(path, mPaint);
    }   

geoArrayList はジオポイントのリストです。

于 2012-07-16T06:42:22.647 に答える
0

Googleマップ上の2つのポイント間のルートを描画するには、以下のスタックオーバーフローの回答を使用してください。役立つ場合があります。

Googleマップにルートパスを描く

于 2012-07-16T07:48:35.663 に答える