2

so im making a game for android and i need to overlay regions or polygons on a google maps window.

so far i have made the following:

    class polygonOverlay extends Overlay {
    //this is the array of vertices we need to draw
    GeoPoint[] vet;
    Point[] points;
    private float[] fVet;
    //get the vertices

    public polygonOverlay(GeoPoint[] v) {
        vet = v;
        points = new Point[v.length];
        fVet = new float[(v.length)*2];

    }

    //this is how we draw it.
    @Override
    public void draw(Canvas canvas, MapView mapv, boolean shadow) {

        super.draw(canvas,mapv, shadow);

        //do some things
        //set all the points to a point.
        for(int i = 0; i < points.length; i++) {
            points[i] = new Point();
        }

        //convert from the array of geoPoints to the array of points using the projection.
        for(int i = 0; i < vet.length; i++){
        projection.toPixels(vet[i], points[i]);

        }

        //convert the point to the float array
        for(int i = 0; i < points.length; i++) {
        fVet[2*i] = points[i].x;
        fVet[(2*i)+1]  = points[i].y;
        }
        //things be done...

        //create a array of int colors.
        int[] colorArray = new int[points.length];

        for(int i = 0; i < points.length; i++) {
            colorArray[i] = Color.RED;
        }

        //if we are drawing a shadow, then dont draw anything
        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(4);
        //lets draw some things.
        canvas.drawLine(points[1].x, points[1].y, 200, 200, mPaint);
        canvas.drawVertices(
                Canvas.VertexMode.TRIANGLES,
                fVet.length,
                fVet,
                0,
                null,
                0,
                colorArray,
                0,
                null,
                0,
                0,
                mPaint
                ); 


    }

}

the issue is however that it will not show the polygons. i have tryed everything and was up until 2am last night doing so but it just wont work.

i'm beginning to think that its my phone not my code...

can anyone see what i have done wrong?

Tom Merry
  • 33
  • 4

2 Answers2

1

polygon creation is simple:

First define a Paint object:

Paint mPaint = new Paint();
mPaint.setStrokeWidth(2);  //2 pixel line width
mPaint.setColor(0xFF097286); //tealish with no transparency
mPaint.setStyle(Paint.Style.STROKE); //stroked, aka a line with no fill
mPaint.setAntiAlias(true);  // no jagged edges, etc

Then draw the path with:

yourCanvas.drawPath(path,mPaint);

and here is the link for map overlay : android maps circle overlay, dynamically change radius?

Community
  • 1
  • 1
Nimit
  • 1,714
  • 3
  • 22
  • 33
0

There is a bug in the drawVertices method which requires the colorArray to be the same size as the fVet array in your code.
Note: Only the first fVet/2 colors are actually used for drawing, the others are ignored.

Community
  • 1
  • 1