Канва для рисования многоугольника над картой в Android - PullRequest
3 голосов
/ 09 ноября 2011

Мне нужно нарисовать полигон из нескольких точек (у меня есть их широта, долгота). Я основываю свою реализацию на этих двух ответах: Рисование пустого многоугольника с учетом набора точек на карте Overylay (Android 2.1) Рисование линии / пути на Картах Google

В моем MapOverlayAction.java я установил оверлей для некоторых пинов, как это:

mapOverlays.add(itemizedoverlay);
setLocationOverlay(mapView, mapController);

, где itemizedoverlay - массив элементов OverlayItems

Это отлично работает. Но мне также нужно нарисовать многоугольник для этих точек (где каждая точка является вершиной). Итак, что я делаю:

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

Мой вопрос: откуда мне взять этот холст? У меня есть весь этот код в моем классе деятельности.

Спасибо!

1 Ответ

0 голосов
/ 09 ноября 2011

Вам потребуется создать подкласс класса Overlay и переопределить метод Draw , чтобы получить холст.

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

...