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