2010-06-24 10 views
5

Estoy tratando de mostrar un ícono de un hombre con un círculo debajo de sus pies en el centro de MapView. Aquí está mi código de superposición:¿Por qué la sombra de mi superposición MapView está en el lugar incorrecto?

public class CenterOverlay extends Overlay 
{ 
    private Drawable d; 

    public CenterOverlay(Drawable drawable) 
    { 
     final int w = drawable.getIntrinsicWidth(); 
     final int h = drawable.getIntrinsicHeight(); 
     drawable.setBounds(0, 0, w, h); 
     this.d = drawable; 
    } 

    @Override 
    public void draw(Canvas canvas, MapView mapView, boolean shadow) 
    { 
     final int mapCenterX = mapView.getWidth()/2; 
     final int mapCenterY = mapView.getHeight()/2; 
     final int x = mapCenterX - d.getIntrinsicWidth()/2; 
     final int y = mapCenterY - d.getIntrinsicHeight(); 
     drawAt(canvas, d, x, y, shadow); 
    } 
} 

el código para agregar la superposición al MapView está funcionando bien (puedo ver el icono de la derecha, donde se supone que debe ser). El problema es que la sombra generada automáticamente está en el lugar equivocado (alrededor del ancho del icono a la izquierda, y aproximadamente a la mitad del ícono).

Gracias de antemano por su ayuda!

Respuesta

7

Con los límites que está configurando - 0, 0, w, h - el origen está en la parte superior izquierda del icono, lo que probablemente sea lo que está causando el cálculo oculto incorrecto. No conozco los detalles de esta imagen, pero si se trata de un ícono de hombre, es probable que prefiera el origen cerca del centro inferior. ItemizedOverlay.boundCenterBottom() puede hacer esto por usted, o si desea más control de grano fino, se puede intentar jugar con el código como este:

drawable.setBounds(-width/2, -height, width - (width/2), 0) 
+0

Siento haber tardado tanto en responder, se fue de vacaciones. De todos modos, esto funciona, aunque yo mismo lo resolví convirtiéndolo en ItemizedOverlay.boundCenterBottom(), registrando los valores que estableció, volviendo a mi Superposición e ingresando esos valores. : P No entendía bien cómo funcionaba el cuadro delimitador. –

Cuestiones relacionadas