2011-11-09 3 views
3

多角形をいくつかの点から描画する必要があります(緯度、経度があります)。 私はこれらの2つの答えから私の実装を基づかています:私はこのようないくつかのピンのためのオーバーレイを設定し、私のMapOverlayAction.javaで Drawing an empty polygon given a set of points on a Map Overylay (Android 2.1) Drawing a line/path on Google MapsキャンバスがAndroidのマップビューでポリゴンを描画する

itemizedoverlayはOverlayItems

の配列です
mapOverlays.add(itemizedoverlay); 
setLocationOverlay(mapView, mapController); 

これは正常に動作します。しかし、私はまた、これらの点(それぞれの点が頂点である)のためのポリゴンを描く必要があります。だから私は何をすべきかは、次のとおりです。answersIの両方で

Path path = new Path(); 

for (int j = 0; j < itemizedoverlay.size(); j++) { 

    GeoPoint gP1 = itemizedoverlay.getItem(j).getPoint(); 
    Point currentScreenPoint = new Point(); 

    Projection projection = mapView.getProjection(); 
    projection.toPixels(gP1, currentScreenPoint); 

    if (j == 0) 
     path.moveTo(currentScreenPoint.x, currentScreenPoint.y); 
    else 
     path.lineTo(currentScreenPoint.x, currentScreenPoint.y); 
} 

が私の解決策を基づかています、以下のメソッドが呼び出されている:

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

    canvas.drawPath(path, mPaint); 

私の質問があり、どこからそのキャンバスを得るのですか? 私はすべてこのコードを私のアクティビティクラスに持っています。

ありがとうございます!

答えて

0

キャンバスを取得するには、オーバーレイクラスをサブクラス化し、Drawメソッドをオーバーライドする必要があります。

新しいクラスをインスタンス化し、オーバーレイのリストに追加して地図に表示させます。これはquestionが役に立ちます。

+0

ありがとう、私は私の質問で引用された私の解決策でその質問を使用しています。とにかく、今私はちょうどそれが別の方法でやり遂げることができると思ったと言いました。ありがとう – marimaf

関連する問題