Я просто пытаюсь отобразить значок человека с кругом под его ногами в центре MapView. Вот мой код Наложения:
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);
}
}
Код, чтобы добавить Наложение к MapView хорошо работает (я вижу право значка, где это, как предполагается). Проблема состоит в том, что автоволшебно сгенерированная тень находится в неправильном месте (о значке width налево, и примерно на полпути значок).
Заранее спасибо за Вашу справку!
При заданных вами границах - 0, 0, w, h - начало координат находится в левом верхнем углу иконки, что, скорее всего, и является причиной неправильного расчета тени. Я не знаю деталей этого изображения, но если это иконка мужчины, то, скорее всего, нужно, чтобы начало координат находилось в центре внизу. ItemizedOverlay.boundCenterBottom() может сделать это за вас, или если вы хотите более тонкого контроля, вы можете попробовать поиграть с таким кодом:
drawable.setBounds(-width / 2, -height, width - (width / 2), 0)