-1

如何仅使用 java 连接 Google map API 中的标记,即不使用 asp.net、php 或任何其他语言?我只是一个初学者。我的地图上有多个标记,它们显示了 Google android 项目中的相应位置。

4

1 回答 1

1

创建您自己的Overlay类(而不是使用ItemizedOverlay用于显示标记的类)并实现draw()绘制线条的方法。MapView在添加用于显示标记的普通叠加层之前,将此叠加层添加到您的标记中,如下所示:

mMapView.getOverlays().add(mPathOverlay);
mMapView.getOverlays().add(mMarkersOverlay);

一个PathOverlay类可以是这样的。这些位置将是您的标记的位置,已经转换为GeoPoints。

public class PathOverlay extends Overlay {

    private List<GeoPoint> mPositions;
    private Path mPath;
    private Paint mPathPaint;
    private Point mHelperPoint = new Point();

    public PathOverlay(List<GeoPoint> positions) {
        mPositions = positions;
        mPath = new Path();
        mPathPaint = new Paint();
        mPathPaint.setColor(0xDDA4C639);
        mPathPaint.setStyle(Paint.Style.STROKE);
        // add more path styling here
    }

    @Override
    public void draw(Canvas canvas, MapView mapView, boolean shadow) {
        if (shadow) {
            return; // path has no shadow
        }
        mPath.reset();
        boolean start = true;
        Point prev = new Point();
        for (Position p : mPositions) {
            mapView.getProjection().toPixels(p.geoPoint, mHelperPoint);
            if (start) {
                mPath.moveTo(mHelperPoint.x, mHelperPoint.y);
                prev.set(mHelperPoint.x, mHelperPoint.y);
                start = false;
            } else {
                int dx = prev.x - mHelperPoint.x;
                int dy = prev.y - mHelperPoint.y;
                mPath.lineTo(mHelperPoint.x, mHelperPoint.y);
                prev.set(mHelperPoint.x, mHelperPoint.y);
            }
        }
        canvas.drawPath(mPath, mPathPaint);
    }
}
于 2012-11-18T19:13:07.060 回答