我只是想在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);
}
}
将Overlay添加到MapView的代码工作正常(我可以看到图标正确的位置)。问题是自动生成的阴影位于错误的位置(左侧图标的宽度,图标的大约一半)。
提前感谢您的帮助!
答案 0 :(得分:7)
使用你设置的界限 - 0,0,w,h - 原点位于图标的左上角,这很可能是造成阴影计算错误的原因。我不知道这个图像的细节,但如果它是一个男人的图标,你可能希望原点靠近底部中心。 ItemizedOverlay.boundCenterBottom()可以为您执行此操作,或者如果您想要更精细的控件,您可以尝试使用以下代码:
drawable.setBounds(-width / 2, -height, width - (width / 2), 0)