Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在画布上显示两点A和B_Java_Android_Android Canvas_Trigonometry - Fatal编程技术网

Java 在画布上显示两点A和B

Java 在画布上显示两点A和B,java,android,android-canvas,trigonometry,Java,Android,Android Canvas,Trigonometry,我需要在我用Android中的Canvas创建的雷达圈图像上显示以下两点(A和B)。这两点有纬度和经度值。假设点A有这些值- Latitude: 37.33774833333334 Longitude: -121.88670166666667 Latitude: 37.336453 Longitude: -121.884985 点B有这些值- Latitude: 37.33774833333334 Longitude: -121.88670166666667 Latitude: 37.33

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

Latitude: 37.33774833333334
Longitude: -121.88670166666667
Latitude: 37.336453
Longitude: -121.884985
点B有这些值-

Latitude: 37.33774833333334
Longitude: -121.88670166666667
Latitude: 37.336453
Longitude: -121.884985
我需要在画布上显示上面的两个点,从一个圆的中心点进行一些计算,如下图所示。下面是在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(); 
    } 


}

我不确定,我如何通过从我用画布创建的圆的中心点进行计算来显示雷达圆图像上的两个点(A和B)。是否需要进行一些角度计算?我在Android project中的可绘图文件夹中有两个点的独立图像
A和B
,最简单的方法是在
地图视图中使用
叠加项和
地理点。您最好将雷达设置为一个覆盖项目。

因此您想将GPS坐标转换为每个点A和B的X-Y坐标?谢谢您的建议。你能给我举一些能实现我的场景的例子吗?这样我就能理解更多了。@nevzz03。通读提供的链接(第2部分:添加覆盖项)。它给出了使用
OverlayItems