Используйте Projection
из MapView
для преобразования GeoPoints в «экранные» точки. После этого вы можете использовать Path
, чтобы нарисовать желаемую линию. Первая точка должна быть указана с помощью path.moveTo(x, y)
, а остальная - с помощью path.lineTo(x, y)
. В конце вы звоните canvas.drawPath(path)
и все готово.
Ниже приведен код из моего метода draw (), который рисует многоугольник вокруг набора точек. Обратите внимание, что вам не нужно использовать path.close()
, как я использовал в своем коде.
public void draw(android.graphics.Canvas canvas, MapView mapView, boolean shadow){
if(shadow){
if(isDrawing == false){
return;
}
Projection proj = mapView.getProjection();
boolean first = true;
/*Clear the old path at first*/
path.rewind();
/* The first tap */
Paint circlePaint = new Paint();
Point tempPoint = new Point();
for(GeoPoint point: polygon){
proj.toPixels(point, tempPoint);
if(first){
path.moveTo(tempPoint.x, tempPoint.y);
first = false;
circlePaint.setARGB(100, 255, 117, 0);
circlePaint.setAntiAlias(true);
canvas.drawCircle(tempPoint.x, tempPoint.y, FIRST_CIRCLE_RADIOUS, circlePaint);
}
else{
path.lineTo(tempPoint.x, tempPoint.y);
circlePaint.setARGB(100, 235, 0, 235);
circlePaint.setAntiAlias(true);
canvas.drawCircle(tempPoint.x, tempPoint.y, CIRCLE_RADIOUS, circlePaint);
}
}
/* If indeed is a polygon just close the perimeter */
if(polygon.size() > 2){
path.close();
}
canvas.drawPath(path, polygonPaint);
super.draw(canvas, mapView, shadow);
}
}