2011-05-06 9 views
5

Estoy trabajando en una aplicación para la cual necesito que se dibuje una ruta en un mapa de Google a medida que la ubicación cambia mostrando dónde ha estado el usuario. Intenté utilizar la clase MyLocationOverlay pensando que podía anular el método que dibuja la ubicación, pero no he podido determinar qué método anular. Además, parece que MyLocationOverlay dibuja un nuevo mapa cada vez que se dibuja la ubicación. Actualmente estoy usando un ItemizedOverlay y solo tengo un punto agregado a la lista cada vez que cambia la ubicación. Esto funciona, y tengo un camino de puntos mientras camino, pero realmente me gustaría un camino sólido. ¿Hay alguna sugerencia?Trace un camino siguiendo su ubicación en Google Maps para Android

También he visto esto post pero no puedo hacerlo funcionar. ¿No necesitas una superposición para ordenarla en el mapa?

Respuesta

3

Creo que la manera más fácil de hacerlo sería subclase de la clase Superposición, y luego anule el método de dibujo. El método de sorteo es bastante abierto y no debería ser demasiado difícil trazar un camino. Un ejemplo podría ser algo como esto:

public class PathOverlay extends Overlay{ 

    private List<GeoPoint> gpoints; 

    public PathOverlay(List<GeoPoint> gpoints){ 
     this.gpoints = gpoints; 
    } 

    @Override 
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) 
    { 
     List<Point> mpoints = new ArrayList<Point>(); 

     // Convert to a point that can be drawn on the map. 
     for(GeoPoint g : gpoints){ 
      Point tpoint = new Point(); 
      mapView.getProjection().toPixels(g, tpoint); 
      mpoints.add(tpoint); 
     } 

     Path path = new Path(); 

     // Create a path from the points 
     path.moveTo(mpoints.get(0).x, mpoints.get(0).y); 
     for(Point p : mpoints){ 
      path.lineTo(p.x, p.y); 
     } 

     Paint paint = new Paint(); 
     paint.setARGB(255, 255, 0, 0); 
     paint.setStyle(Style.STROKE); 
     // Draw to the map 
     canvas.drawPath(path,paint); 

     return true; 

    } 
} 

objetos de esta clase pueden ser añadidos a la lista devuelta por MapView.getOverlays() que se añade al mapa.

Cuestiones relacionadas