Я решил эту проблему, и я думаю, что полученные знания могут быть полезны для других, поэтому я объясню, что здесь произошло.Я не уверен, будет ли уместным ответить на мой собственный вопрос - если нет, пожалуйста, сообщите мне, где я должен поместить этот текст, и я соответствующим образом отредактирую / удалю.
Проблема заключалась в моем неправильном понимании фундаментальныхспособ рисования рисовать.Это недоразумение возникло при чтении JavaDoc для Drawable.draw, в котором говорится:
Рисование в своих границах (устанавливается через setBounds) с учетом дополнительных эффектов, таких как альфа (устанавливается через setAlpha) и цветовой фильтр (устанавливается черезsetColorFilter).
Поскольку у меня изначально был подкласс Overlay, рисующий путь, который вы можете видеть на скриншоте, и я решил использовать ItemizedOverlay для маркеров вдоль этого пути (чтобы их можно было легко переставлять и т. Д.), Я решилнемного изменить мой класс.В определенный момент, чтобы посмотреть, все ли работает так, как я ожидал, я добавил несколько элементов и использовал тот же Drawable, что и для одной из конечных точек пути.Руководствуясь JavaDoc для метода draw, я использовал что-то вроде этого для рисования конечных точек пути
private void drawMarker(Canvas canvas, Projection projection,
GeoPoint location, Drawable drawable) {
Point point = projection.toPixels(location, null);
drawable.setBounds(
point.x,
point.y - drawable.getIntrinsicHeight(),
point.x + drawable.getIntrinsicWidth(),
point.y);
drawable.draw(canvas);
}
Однако, когда я отслеживал вызов super.draw, я заметил, что он вызвал Drawable.drawно у drawable всегда были одни и те же границы - те, которые я установил с предыдущим вызовом этого метода drawMarker.Я до сих пор не понимаю, как Drawable.draw знает, куда на самом деле поместить Drawable, но, конечно же, в тот момент поведение, описанное в этом вопросе, было довольно очевидным.Оглядываясь назад, я, вероятно, должен был понять, что boundCenter и boundCenterBottom на самом деле определяют границы Drawable (именно об этом говорит их JavaDoc), но вместо этого, я думаю, я подумал, что это просто изменило способ определения границ "в конечном итоге", когдафактическая точка, на которой вы хотите рисовать, известна.
В любом случае я добавил немного дополнительной функциональности, чтобы использовать рисованные элементы, которые я на самом деле хотел использовать для OverlayItems, и, конечно же, он работает отлично.Я все еще задаюсь вопросом, является ли то, что я делаю в drawMarker, способом, которым это должно быть сделано, но я не знаю другого способа сообщить холсту, куда поместить Drawable.