2012-09-10 41 views
0

我正在根据GPS提供者的当前位置在MapView中显示路线。我可以绘制两点之间的路径,但是当位置变为新点时,问题就会开始,导致绘制路径被擦除。使用GPS提供商在地图上使用当前位置绘制路线

基本上我的位置监听器保存当前GeoPoint并设置新GeoPoint位置之后,它开始覆盖绘制基于这两个points.I的路径思考的一个选项,可以将坐标保存到数据库,然后拉从那里获取信息来绘制路径。

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

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 

     } 

     } 

回答

0

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

+0

存储并从数据库中提取信息是最有效的方法吗? –

+0

对于临时路线,我会将它存储在一个列表中。如果你想稍后存储值或者绘制多条路径,我会去sqlite数据库。 –

相关问题