我想創建一個像谷歌地圖功能時,谷歌地圖繪製路徑。每當有人開始行走/駕駛時,我都想更新自己的位置標記。我正在考慮使用LocationListner的onLocationChange方法,但我不確定。我還想在Google地圖上繪製更新位置的路徑。更新位置標記和步行/驅動的Android
所有的建議是最歡迎的。
ItemizedOverlay: -
public class LocationOverlay extends ItemizedOverlay<OverlayItem>{
private List<OverlayItem> myOverlays;
Path path;
static int cnt = -1;
public LocationOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
System.out.println("Normal...");
myOverlays = new ArrayList<OverlayItem>();
}
public void addOverlay(OverlayItem overlay) {
System.out.println("Add Overlay called");
myOverlays.add(overlay);
populate();
cnt++;
}
@Override
protected OverlayItem createItem(int i) {
return myOverlays.get(i);
}
public void removeItem(int i) {
myOverlays.remove(i);
populate();
}
@Override
public int size() {
return myOverlays.size();
}
@Override
public void draw(Canvas canvas, final MapView mapView, boolean shadow) {
if (shadow) {
paint.setDither(true);
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(4);
path = new Path();
Point point1 = new Point();
Projection projection = mapView.getProjection();
if (myOverlays.size() > 1) {
System.out.println(">>>>>>>>>>>");
for (int i = 0, j=i; i < myOverlays.size(); i++) {
Point point1 = new Point();
Point point2 = new Point();
projection.toPixels(myOverlays.get(i).getPoint(), point1);
System.out.println(">>>>>>>>>>>");
projection.toPixels(myOverlays.get(j++).getPoint(), point2);
System.out.println("Point == " + j);
path.moveTo(point2.x, point2.y);
path.lineTo(point1.x, point1.y);
canvas.drawPath(path, paint);
super.draw(canvas, mapView, shadow);
}
}
}
canvas.drawPath(path, paint);
super.draw(canvas, mapView, shadow);
}
}
注 - 繪製方法被稱爲多時間單locationChanged。
編輯: -
我能畫出路線,只要有任何的位置發生改變,事件火,但我有面臨一個小問題。它每次都從根節點繪製路徑。我希望從最後一個地方開始繪製路徑(即從最後一個位置連接到下一個位置)。我附上一張圖片以便更好地理解。
從圖像中可以看到的出發點也被連接到最後一個點。我不想要這個。對此有任何想法。
默認位置點會自動繪製,並會在您移動後立即更新bu如何更新?我知道通過實現LocationListner它已完成,但我想知道它的更新如何?它是否基於LocationManager的requestUpdateLocation?並在更新時調用onLocationChange方法的權利? – Scorpion 2012-08-01 03:35:28
內部 - 是的。它採用GPS或網絡收到最後已知位置信息和位置被更新 - onLocationChanged觸發回調 – 2012-08-01 06:15:28
好吧。感謝您的發佈。我會試試這個... – Scorpion 2012-08-01 09:19:09