Нарисуйте путь, следуя вашему местоположению в Google Maps для Android - PullRequest
5 голосов
/ 06 мая 2011

Я работаю над приложением, для которого мне нужно нарисовать путь на карте Google, так как местоположение меняется, показывая, где был пользователь. Я пытался использовать класс MyLocationOverlay, думая, что я мог бы просто переопределить метод, который рисует местоположение, но мне не удалось определить, какой метод переопределить. Кроме того, похоже, что MyLocationOverlay рисует новую карту каждый раз, когда рисуется местоположение. В настоящее время я использую ItemizedOverlay и просто добавляю точку в список каждый раз, когда местоположение меняется. Это работает, и я получаю пунктирный путь, когда иду, но мне бы очень хотелось твердый путь. Есть какие-нибудь предложения?

Я также видел этот пост , но не могу заставить его работать. Вам не нужен наложение, чтобы получить его на карте?

1 Ответ

3 голосов
/ 07 мая 2011

Я думаю, что самый простой способ сделать это - создать подкласс класса Overlay, а затем переопределить метод draw. Метод рисования довольно открытый, и рисовать путь не должно быть слишком сложно. Пример будет выглядеть примерно так:

public class PathOverlay extends Overlay{

    private List<GeoPoint> gpoints;

    public PathOverlay(List<GeoPoint> gpoints){
        this.gpoints = gpoints;
    }

    @Override
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) 
    {
        List<Point> mpoints = new ArrayList<Point>();

        // Convert to a point that can be drawn on the map.
        for(GeoPoint g : gpoints){
            Point tpoint = new Point();
            mapView.getProjection().toPixels(g, tpoint);
            mpoints.add(tpoint);
        }

        Path path = new Path();

        // Create a path from the points
        path.moveTo(mpoints.get(0).x, mpoints.get(0).y);
        for(Point p : mpoints){
            path.lineTo(p.x, p.y);
        }

        Paint paint = new Paint();
        paint.setARGB(255, 255, 0, 0);
        paint.setStyle(Style.STROKE);
        // Draw to the map
        canvas.drawPath(path,paint);

        return true;

    }
}

Объекты этого класса затем могут быть добавлены в список, возвращаемый MapView.getOverlays () для добавления на карту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...