gpt4 book ai didi

java - 在 Canvas 上显示两个点 A 和 B

转载 作者:行者123 更新时间:2023-12-01 05:12:06 25 4
gpt4 key购买 nike

我需要在我使用 Android 中的 Canvas 创建的雷达圆图像上显示以下两个点(A 和 B)。这两点都有纬度和经度值。假设 A 点有这些值 -

Latitude: 37.33774833333334
Longitude: -121.88670166666667

B 点有这些值 -

Latitude: 37.336453
Longitude: -121.884985

我需要通过从圆的中心点进行某种计算来在 Canvas 上显示上述两点,如下图所示。下面是在 Android 中创建雷达圈的代码,如下所示 -

public class CircleCanvas extends View{

Context context;
int[] imageNames=new int[6];

public CircleCanvas(Context mContext,int mUser,int mfirstDis,int msecondDis,int mthirdDis,int mfourDis,int bgMap) {
super(mContext);
context = mContext;
imageNames[0]=mUser;
imageNames[1]=mfirstDis;
imageNames[2]=msecondDis;
imageNames[3]=mthirdDis;
imageNames[4]=mfourDis;
imageNames[5]=bgMap;
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint p = new Paint();
p.setColor(Color.BLACK); //BLACK
p.setStyle(Style.STROKE);
//canvas.drawColor(Color.BLACK); //WHITE

WindowManager mWinMgr = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
@SuppressWarnings("deprecation")
int displayWidth = mWinMgr.getDefaultDisplay().getWidth();
@SuppressWarnings("deprecation")
int displayHeight = mWinMgr.getDefaultDisplay().getHeight();

canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),imageNames[5]), 0, 0, null);

int totalCircle=4;
int radius=40;
int centerimagesize=13;

for (int i = 1; i <= totalCircle; i ++) {
canvas.drawCircle(displayWidth/2,displayHeight/4, i*radius, p);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),imageNames[i]), ((displayWidth/2)+(i*radius)),(displayHeight/4), null);
}

canvas.drawLine((displayWidth/2-(totalCircle*radius)), (displayHeight/4), (displayWidth/2+(totalCircle*radius)), (displayHeight/4), p);
canvas.drawLine((displayWidth/2), (displayHeight/4-(totalCircle*radius)), (displayWidth/2), (displayHeight/totalCircle+(4*radius)), p);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),imageNames[0]), ((displayWidth/2)-(centerimagesize/2)),((displayHeight/4)-(centerimagesize/2)), null);

invalidate();
}


}

这是上面代码中 Canvas 的图像 - enter image description here

我正在通过 onCreate 方法传递当前在 Canvas 上显示的所有图像

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

FrameLayout main = (FrameLayout) findViewById(R.id.main_view);
CircleCanvas circleCanvas=new CircleCanvas(this,R.drawable.current_user,R.drawable.tenm,R.drawable.twentym,R.drawable.thirtym,R.drawable.fourtym,R.drawable.bg_map);
main.addView(circleCanvas);

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MINIMUM_TIME_BETWEEN_UPDATES,
MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
new MyLocationListener()
);
}

我不确定,如何通过从使用 Canvas 创建的圆的中心点进行计算来在雷达圆图像上显示两个点(A 和 B)。是否需要进行一些角度计算?我在 Android 项目的可绘制文件夹中有两个点 A 和 B 的单独图像

最佳答案

最简单的方法是在 MapView 中使用 OverlayItemGeoPointhttps://developers.google.com/maps/documentation/android/hello-mapview 。您最好也将雷达设为 OverlayItem

关于java - 在 Canvas 上显示两个点 A 和 B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11876972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com