0

プロバイダーMapViewからの現在の場所に基づいてルートを表示するプロジェクトに取り組んでいます。GPS2点間のパスを描画することはできますが、場所が新しいポイントに変更されて描画パスが消去されると、問題が発生します。

基本的に、私のロケーションリスナーは現在の場所を保存しGeoPointて新しいGeoPoint場所を設定し、その後オーバーレイを開始して、これら2つのポイントに基づいてパスを描画します。オプションとして、座標をデータベースに保存し、そこから情報を取得して描画することもできます。パス。

これまでの私のコードは次のとおりです。

private class MyLocationListener implements LocationListener {

   public void onLocationChanged(Location location) {   

     Toast.makeText(getBaseContext(), "Tracking device..",
                            Toast.LENGTH_SHORT).show();

            gp2 = new GeoPoint(
                    gp1.getLatitudeE6(),
                    gp1.getLongitudeE6());

            gp1 = new GeoPoint(
                    (int) (location.getLatitude() * 1000000),
                    (int) (location.getLongitude() * 1000000));


    myOverlay = new MapOverlay();

    mapOverlays_route.add(myOverlay);
    myMapView.invalidate();
}
}


class MapOverlay extends  com.google.android.maps.Overlay{

        public MapOverlay(){


        }


        public void draw(Canvas canvas, MapView mapv, boolean shadow){
         super.draw(canvas, mapv, shadow);

        //Configuring the paint brush

        Paint mPaint = new Paint();
         mPaint.setDither(true);
         mPaint.setColor(Color.RED);
         mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
         mPaint.setStrokeJoin(Paint.Join.ROUND);
         mPaint.setStrokeCap(Paint.Cap.ROUND);
         mPaint.setStrokeWidth(4);




         Point p1 = new Point();
         Point p2 = new Point();
         Path path1 = new Path();


         Path path2 = new Path();
         projection.toPixels(gp1, p1);
         projection.toPixels(gp2, p2);

         path1.moveTo(p2.x, p2.y);//current location
         path1.lineTo(p1.x,p1.y);//new location


         canvas.drawPath(path1, mPaint);//drawing the path

         }

        }
4

1 に答える 1

0

あなたが言ったように、これらの座標をどこかに保存する必要があります。これらは、データベースまたはより一時的なローカル リストに保存できます。draw メソッドは、格納するすべての座標間で反復する必要もあります。

于 2012-09-12T19:50:10.297 に答える