¿Por qué la sombra de mi MapView Overlay está en el lugar equivocado?

Sólo estoy tratando de mostrar un icono de un hombre con un círculo bajo sus pies en el centro de la MapView. Aquí está mi código de superposición:

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 funciona bien (puedo ver el icono justo donde se supone que es). El problema es que la sombra generada automagically está en el punto incorrecto (sobre el ancho del icono a la izquierda, y sobre mitad del icono).

¡Gracias de antemano por tu ayuda!

Con los límites que está estableciendo – 0, 0, w, h – el origen está en la parte superior izquierda del icono, lo que es más probable es lo que está causando el cálculo de la sombra incorrecta. No conozco los detalles de esta imagen, pero si es un icono de un hombre, es probable que desee el origen cerca del centro inferior. ItemizedOverlay.boundCenterBottom () puede hacer esto para usted, o si desea más control de grano fino, puede intentar jugar con código como este:

 drawable.setBounds(-width / 2, -height, width - (width / 2), 0) 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.