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
}
}
存儲並從數據庫中提取信息是最有效的方法嗎? –
對於臨時路線,我會將它存儲在一個列表中。如果你想稍後存儲值或者繪製多條路徑,我會去sqlite數據庫。 –