Android 为什么“地图视图”覆盖的阴影位于错误的位置?
我只是想在地图视图的中心显示一个男人的图标,他的脚下有一个圆圈。这是我的覆盖代码:Android 为什么“地图视图”覆盖的阴影位于错误的位置?,android,Android,我只是想在地图视图的中心显示一个男人的图标,他的脚下有一个圆圈。这是我的覆盖代码: public class CenterOverlay extends Overlay { private Drawable d; public CenterOverlay(Drawable drawable) { final int w = drawable.getIntrinsicWidth(); final int h = drawable.ge
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的代码运行良好(我可以在它应该位于的位置看到图标)。问题是,自动生成的阴影位于错误的位置(图标左侧的宽度,图标的一半)
提前感谢您的帮助 对于您正在设置的边界--0,0,w,h--原点位于图标的左上角,这很可能是导致阴影计算不正确的原因。我不知道这张图片的细节,但如果它是一个男人的图标,你可能希望原点靠近底部中心。ItemizeOverlay.boundCenterBottom()可以为您做到这一点,或者如果您想要更细粒度的控制,您可以尝试使用以下代码:
drawable.setBounds(-width / 2, -height, width - (width / 2), 0)
对不起,我花了这么长时间才回答,去度假了。无论如何,这是可行的——尽管我自己通过转换为ItemizedOverlay.boundCenterBottom()、记录它设置的值、返回到我的覆盖并输入这些值来解决这一问题:P我对边界框的工作原理了解得很差。