这是我的下面的代码,它在Circle中绘制一个圆圈并将当前位置作为圆心。我正在当前位置展示星座标记。
问题陈述: -
下面的代码工作正常,但我遇到的唯一问题是Star Sign Marker
,它不在圆圈的中心。我需要Star Sign Marker
(android.R.drawable.star_on)
始终在圆圈的中心。
imageNames[0]
是以下代码中的圆圈中心(星座标记)。
任何建议对我都有很大的帮助。
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
super.draw(canvas, mapView, shadow);
Point screenPts = new Point();
mapView.getProjection().toPixels(pointToDraw, screenPts);
//--------------draw circle----------------------
Point pt = mapView.getProjection().toPixels(pointToDraw,screenPts);
Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
circlePaint.setColor(0x30000000);
circlePaint.setStyle(Style.FILL_AND_STROKE);
int totalCircle=4;
int radius=40;
int centerimagesize=13;
for (int i = 1; i <= totalCircle; i ++) {
canvas.drawCircle(screenPts.x,screenPts.y, i*radius, circlePaint);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),imageNames[i]), ((screenPts.x)+(i*radius)),(screenPts.y), null);
}
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),imageNames[0]), (screenPts.x-(centerimagesize/2)),(screenPts.y-(centerimagesize/2)), null);
super.draw(canvas,mapView,shadow);
return true;
}
以下是我目前在模拟器中获取的屏幕截图。我需要星座总是在圆圈的中心。我正在运行android 4.1
答案 0 :(得分:1)
对我而言,您似乎忘了考虑您的标记尺寸。你可能应该开始画像:
screenPts.x - (centerimagesize + starSignWidth)/2
screenPts.y - (centerimagesize + starSignHeight)/2
您实际所做的就是告诉画布开始在屏幕中间左上角绘制标记。这意味着星标中心将与您的屏幕中心不同。
Canvas.drawBitmap的API(位图位图,左边浮动,浮顶,油漆)说:
绘制指定的位图,其上/左角为(x,y)
这正是你做的。您的标记左上角位于屏幕中间。