Autore Topic: Intersezione overlay su mappa  (Letto 695 volte)

Offline moriero

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Htc Desire
  • Sistema operativo:
    Windows 7
Intersezione overlay su mappa
« il: 11 Gennaio 2012, 11:27:27 CET »
0
Ciao ho un problema con gli overlay sulla mappa.
La mia applicazione dovrebbe mostrare sulla mappa il percorso effettuato
inserendo degli overlay per "colorare" la mappa.
Questo è un esempio di quello che vorrei realizzare:



Quando gli overlay si sovrappongono però, la parte della loro intersezione è più scura, poichè gli overlay
sono dei cerchi semi-trasparenti.
Ho trovato qualcosa (ma senza risolvere )in questa discussione  http://stackoverflow.com/questions/7196864/on-an-android-canvas-how-do-i-draw-overlapping-shapes-with-non-interacting-alph.

Secondo voi come potrei cercare di risolvere il problema?
E' possibile nella posizione in cui devo inserire il nuovo overlay cancellare dalla mappa sola la parte dell'overlay precedente che verrebbe intersecata?

Grazie, vi allego il codice che utilizzo per inserire gli overlay:

Codice (Java): [Seleziona]
       
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;

public class ImpactOverlay extends Overlay {

        private Path mPath;
        private static int CIRCLERADIUS = 0;
        private GeoPoint geopoint;
        private int myCircleRadius;
       
        public ImpactOverlay(GeoPoint point, int myRadius) {
               
                geopoint = point;
                CIRCLERADIUS = myRadius; // assegna raggio del cerchio
               
        }

        public void draw(Canvas canvas, MapView mapView, boolean shadow) {
                                               
                // Transfrom geoposition to Point on canvas
                Projection projection = mapView.getProjection();
                Point point = new Point();
                projection.toPixels(geopoint, point);
               
                // the circle to mark the spot
                Paint circle = new Paint(Paint.ANTI_ALIAS_FLAG);
                circle.setColor(Color.RED);
                circle.setAlpha(50); // trasparenza

                myCircleRadius = metersToRadius(CIRCLERADIUS, mapView,
                                (double) geopoint.getLatitudeE6() / 1000000);
               
                canvas.drawCircle(point.x, point.y, myCircleRadius, circle);
                               
        }

        public static int metersToRadius(float meters, MapView map, double latitude) {
                return (int) (map.getProjection().metersToEquatorPixels(meters) * (1 / Math
                                .cos(Math.toRadians(latitude))));
        }
               
}