1

我正在开发一个 android 应用程序,它允许用户跟踪他们的路线并将其显示给他们。我有一个使用 gps 的地图视图,找到一个用户位置,将每个位置保存到一个数组列表中,并在覆盖层上的每个点上画线,所有这些在实际的谷歌地图上都可以正常工作。但是,我想使用 androids 的画布功能创建更详细的视图。画布显示(作为绿色背景),但当我尝试在地理点数组列表之间绘制时,线条(和点)不显示。我通过调用内部类将内容视图设置为画布,如下所示:

setContentView(new SimulationDraw(this));

this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
paint = new Paint(Color.LTGRAY);

这是有问题的课程:

class SimulationDraw extends View {
    private ColourGeoPoint firstPoint;
    private Object lastCGP;
    private int lastCGPLong;
    private int lastCGPLat;


    public SimulationDraw(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        firstPoint = null;
    }

    @Override
    public void onDraw(Canvas canvas) {
        canvas.drawColor(Color.GREEN);

        paint.setColor(Color.LTGRAY);
        paint.setStrokeWidth(20);
        paint.setStyle(Paint.Style.STROKE); 

        for(ColourGeoPoint point : trackOverlay.geoPointsArray){
            int loclat = point.getGeoLocation().getLatitudeE6();
            System.out.println("LOCLAT" + loclat);
            int loclong = point.getGeoLocation().getLongitudeE6();
            System.out.println("LOCLONG" + loclong);

            canvas.drawPoint(loclat, loclong, paint);
            if (lastCGP == null) {
                lastCGP = point;
                lastCGPLat = point.getGeoLocation().getLatitudeE6();
                System.out.println("LASTCGPLAT" + lastCGPLat);
                lastCGPLong = point.getGeoLocation().getLongitudeE6();
                System.out.println("LASTCGPLONG" + lastCGPLong);
            } else {
                Path path = new Path();
                path.moveTo(loclat,loclong);
                path.lineTo(lastCGPLat, lastCGPLong);
                canvas.drawLine(loclat, loclong, lastCGPLat, lastCGPLong, paint);
                canvas.drawPoint(loclat, loclong, paint);
                lastCGP = point;
            }
        }

所以我的问题是,我哪里出错了?我插入了一些打印语句并尝试绘制画布和点,但除了绿色背景之外什么都没有显示。我没有运行时错误。

作为旁注,打印语句按预期显示地理点。我是否需要以某种方式将地理点转换为屏幕点?我也在地图视图的顶部画了这个,这可能与它为什么根本不起作用有关吗?

提前谢谢了。

4

0 回答 0