Есть ли класс Polygon для использования в MapView? - PullRequest
3 голосов
/ 30 августа 2011

Есть ли сторонний lib или класс Android, такой как google.maps.Polygon, который будет использоваться в MapView (нативных API Карт Google)?Я гуглил, но не смог найти.

1 Ответ

1 голос
/ 30 августа 2011

Нет класса для рисования полигонов в API Карт. Смотри документацию здесь:

http://code.google.com/android/add-ons/google-apis/reference/index.html

Ниже приведен код, который я использовал для построения маршрута с учетом списка точек. Возможно, вы могли бы изменить его, чтобы сделать то, что вам нужно.

public class MapOverlay extends Overlay {

        ArrayList<GeoPoint> route;

        public MapOverlay(ArrayList<ParcelableGeoPoint> r) {
                route = new ArrayList<GeoPoint>();
                for (ParcelableGeoPoint p: r) {
                        route.add(p.getGeoPoint());
                }
        }

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

                Paint mPaint = new Paint();
                mPaint.setDither(true);
                mPaint.setColor(Color.rgb(128, 136, 231));
                mPaint.setAlpha(100);
                mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
                mPaint.setStrokeJoin(Paint.Join.ROUND);
                mPaint.setStrokeCap(Paint.Cap.ROUND);
                mPaint.setStrokeWidth(6);

                Path path = new Path();

                GeoPoint start = route.get(0);
                for (int i = 1; i < route.size(); ++i) {
                        Point p1 = new Point();
                        Point p2 = new Point();

                        Projection projection = mapv.getProjection();
                        projection.toPixels(start, p1);
                        projection.toPixels(route.get(i), p2);

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

                        start = route.get(i);
                }
                canvas.drawPath(path, mPaint);
        }
}
...