本帖最後由 ploglin 於 2011-11-25 19:14 編輯
Android 在 MAP 的部份有直接支援路線規劃。
我的做法是呼叫 google api 取得路線的所有經緯度,然後再呼叫 LineItemizedOverlay 去實作
LineItemizedOverlay.java- public class LineItemizedOverlay extends Overlay {
- private ArrayList<GeoPoint> mOverlays = new ArrayList<GeoPoint>();
- private int colour;
- private static final int ALPHA = 120;
- private static final float STROKE = 4.5f;
- private final Path path;
- private final Point p;
- private final Paint paint;
- public LineItemizedOverlay(ArrayList<GeoPoint> mOverlays) {
- this.mOverlays = mOverlays;
- path = new Path();
- p = new Point();
- paint = new Paint();
- }
- @Override
- public void draw(Canvas canvas, MapView mapView, boolean shadow) {
- super.draw(canvas, mapView, shadow);
- paint.setColor(Color.BLUE);
- paint.setAlpha(ALPHA);
- paint.setAntiAlias(true);
- paint.setStrokeWidth(STROKE);
- paint.setStyle(Paint.Style.STROKE);
- redrawPath(mapView);
- canvas.drawPath(path, paint);
- }
- private void redrawPath(final MapView mv) {
- final Projection prj = mv.getProjection();
- path.rewind();
- final Iterator<GeoPoint> it = mOverlays.iterator();
- prj.toPixels(it.next(), p);
- path.moveTo(p.x, p.y);
- while (it.hasNext()) {
- prj.toPixels(it.next(), p);
- path.lineTo(p.x, p.y);
- }
- path.setLastPoint(p.x, p.y);
- }
- }
複製代碼 |