Почему тень моего Наложения MapView в неправильном месте?

Я просто пытаюсь отобразить значок человека с кругом под его ногами в центре 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 налево, и примерно на полпути значок).

Заранее спасибо за Вашу справку!

6
задан Ben Barbour 24 June 2010 в 22:00
поделиться

1 ответ

При заданных вами границах - 0, 0, w, h - начало координат находится в левом верхнем углу иконки, что, скорее всего, и является причиной неправильного расчета тени. Я не знаю деталей этого изображения, но если это иконка мужчины, то, скорее всего, нужно, чтобы начало координат находилось в центре внизу. ItemizedOverlay.boundCenterBottom() может сделать это за вас, или если вы хотите более тонкого контроля, вы можете попробовать поиграть с таким кодом:

drawable.setBounds(-width / 2, -height, width - (width / 2), 0)
7
ответ дан 17 December 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: