1

私は、ユーザーがルートを追跡して表示できるAndroidアプリを開発しています。私はgpsを使用し、ユーザーの場所を見つけ、各場所を配列リストに保存し、オーバーレイ上の各ポイントに線を描画するマップビューを持っています。これらはすべて実際のGoogleマップで正常に機能します。ただし、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;
            }
        }

だから私の質問は、どこが間違っているのかということです。いくつかの印刷ステートメントを挿入し、キャンバスとポイントを描画しようとしましたが、緑の背景以外には何も表示されません。ランタイムエラーは発生しません。

補足として、printステートメントは期待どおりにジオポイントを表示します。どういうわけか、ジオポイントをスクリーンポイントに変換する必要がありますか?また、これをマップビューの上に上に描画していますが、それがまったく機能しない理由と関係があるのでしょうか。

よろしくお願いします。

4

0 に答える 0