Подключение GPS-координат, взятых из базы данных в Android с помощью Overlay - PullRequest
0 голосов
/ 19 марта 2010

В настоящее время я создаю приложение, которое позволяет пользователям отслеживать, где их телефон был на карте Google. В тот момент, когда вызывается метод onLocationChanged (), приложение сохраняет текущую долготу и широту GPS в базе данных и вызывает метод animateTo () для текущей позиции.

Используя SDK 1.5, как мне соединить эти точки с цветной линией, нарисованной на MapView с помощью наложения ?.

1 Ответ

1 голос
/ 20 марта 2010

Вы должны создать собственный класс, расширяющий ItemizedOverlay, и в методе draw нарисовать линию на Canvas.

Например:

public class MyOverlay extends ItemizedOverlay<OverlayItem> {
    private Projection projection;
    private Point linePaint;
    private Vector<GeoPoint> points;
    public MyOverlay(Drawable defaultMarker) {
        points = new Vector<GeoPoint>()
        linePaint = new Paint();
        //set color, stroke width etc.
    }

    public void addPoint(GeoPoint point) {
        points.addElement(point);
    }

    public void setProjection(Projection projection) {
        this.projection = projection;
    }

    public void draw(Canvas canvas, MapView mapView, boolean shadow) {
        int size = points.size();
        Point lastPoint = new Point();
        projection.toPixels(points.get(0), lastPoint);
        Point point = new Point();
        for(int i = 1; i<size; i++){
            projection.toPixels(points.get(i), point);
            canvas.drawLine(lastPoint.x, lastPoint.y, point.x, point.y, linePaint);
            lastPoint = point;
        }
    }
 }

В onLocationChanged() вы должны добавить новый геопункт через overlay.addPoint. В onCreate() действия, где будет отображаться MapView, вы должны добавить

overlay = new MyOverlay(null); //overlay must be accessible from onLocationChanged
map.getOverlays().add(overlay); //map = (MapView) findViewById(R.id.mapview)

Вы также должны проверить при рисовании (или где-то еще), будет ли точка находиться в видимом прямоугольнике для увеличения скорости рисования.

Я не пытался это скомпилировать, поэтому не вините меня, если есть небольшие ошибки.

...