我想從當前位置(從GPS獲取)到他旅行的方式在mapView中繪製路線。MapView - 跟蹤和繪製他旅行的路線?
我可以在用戶沿特定方向移動時獲取用戶的位置,但我無法繪製路徑。
當他不斷地從一個地方移動到另一個地方時,繪製路徑路徑的最佳方式是什麼?
我希望方法很好(就性能而言)。
我想從當前位置(從GPS獲取)到他旅行的方式在mapView中繪製路線。MapView - 跟蹤和繪製他旅行的路線?
我可以在用戶沿特定方向移動時獲取用戶的位置,但我無法繪製路徑。
當他不斷地從一個地方移動到另一個地方時,繪製路徑路徑的最佳方式是什麼?
我希望方法很好(就性能而言)。
您將不得不跟蹤當前位置&以前的位置(例如在全局變量中)爲了繪製路徑[除了第一次只有當前位置,所以在下一點之前你什麼也不做] 。
int x1 = -1, y1 = -1, x2 = -1, y2 = -1;
Paint paint = new Paint();
paint.setColor(Color.rgb(0x7b, 0x7b, 0xff));
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
Point prevloc = new Point();
mv.getProjection().toPixels(new GeoPoint((int (prevlocation.getLatitude()*1.0E6),(int) (prevlocation.getLongitude()*1.0E6)), prevloc);
Point loc = new Point();
mv.getProjection().toPixels(new GeoPoint((int (location.getLatitude()*1.0E6),(int) (location.getLongitude()*1.0E6)), loc);
x2 = prevloc.x;
y2 = prevloc.y;
if (first)
{
x2 = loc.x;
y2 = loc.y;
}
if (!first) {
canvas.drawLine(x1, y1, x2, y2, paint);
}
x1 = x2;
y1 = y2;
這將在draw()
被調用,你以某種方式通過onLocationChanged()
功能繪製覆蓋調用這個繪製函數。
注意:canvas和mv是傳遞給draw()
函數的參數,first是一個全局布爾變量,表示這是您得到或不可能得到的第一個點。
public void draw(Canvas canvas, MapView mapv, boolean shadow){
super.draw(canvas, mapv, shadow);
Projection projection = mapv.getProjection();
Path p = new Path();
for (int i = 0; i < geoPointsArray.size(); i++) {
if (i == geoPointsArray.size() - 1) {
break;
}
Point from = new Point();
Point to = new Point();
projection.toPixels(geoPointsArray.get(i), from);
projection.toPixels(geoPointsArray.get(i + 1), to);
p.moveTo(from.x, from.y);
p.lineTo(to.x, to.y);
}
Paint mPaint = new Paint();
mPaint.setStyle(Style.STROKE);
mPaint.setColor(Color.GREEN);
mPaint.setAntiAlias(true);
mPaint.setStrokeWidth(5);
canvas.drawPath(p, mPaint);
mapv.invalidate();
super.draw(canvas, mapv, shadow);
}//draw()
我們可以使用上述方法來繪製路線,因爲我們從一個地方移動到另一個地方。 geoPointsArray
是接收位置的數組。
尼斯答案。這個想法是最好的,但請記住,我們不想讓geoPointsArray變得龐大並且能夠跟蹤它們,我們需要不斷地爲geoPointsArray添加點。 – ComputerEngineer88 2012-08-29 17:59:30
根據你這是最好的方法或可能嘗試任何其他方法 – 2012-04-05 18:02:26
我不能向你保證這是最好的方法,但這是一個好的開始讓你想要做的事情,然後想到效率,當然,如果你有更好的解決方案,你可以回答自己的問題並將其標記爲答案。 – 2012-04-06 13:39:43