使用GPS提供商使用当前位置从地图上的设备绘制路线

时间:2012-09-10 20:31:36

标签: android android-mapview android-maps android-location

我正在开展一个项目,根据MapView提供商的当前位置在GPS中显示路线。我能够绘制两点之间的路径但问题在位置变为新点时开始,导致绘制路径被擦除。

基本上我的位置监听器会保存当前的GeoPoint并设置新的GeoPoint位置,然后启动叠加层以根据这两点绘制路径。我认为选项可以保存坐标到数据库,然后从那里拉取信息以绘制路径。

到目前为止,这是我的代码:

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

         }

        }

1 个答案:

答案 0 :(得分:0)

就像你说的那样,你需要将这些坐标存储在某个地方。这些可以存储在数据库或更临时的本地列表中。 draw方法还必须在您存储的所有坐标之间进行迭代。