Google マップ エンジンを使用して、アンドロイドで不規則な多角形で地図上の領域をカバーしようとしています。
これは私がテストしているサンプル コードです... Overlay クラスの draw メソッドをオーバーライドします。
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
long when) {
ArrayList<GeoPoint> points = new ArrayList<GeoPoint>();
points.add(getPoint(40.69601721120307,-7.975247972597344));
points.add(getPoint(39.59209428101375,-5.602198679879018));
points.add(getPoint(37.98114679179523,-5.43877491468928 ));
points.add(getPoint(39.01059159609532,-4.050442951443798));
points.add(getPoint(37.99556954318146,-1.728440918734253));
points.add(getPoint(39.26565517073047,-2.576421100521262));
points.add(getPoint(40.21994329403012,-1.164105822610836));
points.add(getPoint(40.57540056971796,-3.415060042751821));
points.add(getPoint(42.5081775151286,-4.553753858729792));
points.add(getPoint(40.74284989396188,-5.388244948956315));
points.add(getPoint(40.69601721120307,-7.975247972597344));
Paint mPaint = new Paint();
mPaint.setColor(Color.RED);
mPaint.setStyle(Style.STROKE);
mPaint.setStrokeWidth(2);
Point point1 = null;
Path path = new Path();
for(GeoPoint p : points){
Point point2 = new Point();
mapView.getProjection().toPixels(p, point2);
if(point1 != null){
path.lineTo(point2.x, point2.y);
canvas.drawPath(path, mPaint);
mapView.getProjection().toPixels(p, point1);
} else {
point1 = new Point();
mapView.getProjection().toPixels(p, point1);
path.moveTo(point1.x, point1.y);
}
}
return true;
}
テストを実行すると、マップに次の結果が表示されます。
ただし、スタイルを Style.STROKE_FILL または Style.FILL に変更すると、マップに次のように表示されます。
フォーラムでこの問題の解決策が見つかりません。
助けていただければ幸いです。
ありがとう。