Android画布地点线图

时间:2012-04-10 21:53:34

标签: android gps drawing line android-canvas

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

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;
            }
        }

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

作为旁注,打印语句按预期显示Geopoints。我是否需要以某种方式将地理点转换为屏幕点?另外我在地图视图中将其绘制在顶部,这可能与它为何无法正常工作有关吗?

非常感谢提前。

0 个答案:

没有答案