Не понимает метод drawAt () для com.google.android.maps.Overlay - PullRequest
3 голосов
/ 19 января 2010

Попытка сделать наложение карт Google в программе для Android.В методе рисования моего наложения у меня есть два способа добавления булавки.Один из них работает, а другой нет.К сожалению, тот, который не работает, также является единственным, у которого есть возможность добавить тень!Любая помощь?

@Override
public void draw(android.graphics.Canvas canvas, MapView mapView,
        boolean shadow) {

    Point po = mapView.getProjection().toPixels(mapView.getMapCenter(),
            null);

    // This does _not_ work, but I would really like it to!
    drawAt(canvas, mapView.getResources().getDrawable(R.drawable.map_marker_v),
           po.x, po.y, false);

    // This does work, but only does half the job
    canvas.drawBitmap(BitmapFactory.decodeResource(mapView.getResources(),
            R.drawable.map_marker_v), po.x, po.y, null);


}

Редактировать: фиксированный тип

Ответы [ 2 ]

5 голосов
/ 19 января 2010

Я думаю, что ваша проблема может заключаться в том, что вы не установили границы для рисования в drawAt(). Вы можете либо вручную установить границы, используя Drawable.setBounds(), либо использовать удобные методы ItemizedOverlay boundCenter() или boundCenterBottom().

Я полагаю, что причина работы второго метода заключается в том, что с декодированным растровым изображением вам не нужно указывать границы Drawable.

1 голос
/ 19 января 2010

На первый взгляд, мне ничего не стоит в отношении того, что может привести к тому, что ваша булавка не сработает. Но я мог бы найти временное решение.

Поиск в Google привел меня к этому сообщению , где пользователь публикует свою версию наложения с возможностью добавления значка вместе с тенью. Это может быть то, что вы ищете.

Надеюсь, это поможет.

...