0

如何在谷歌地图中绘制链接。我目前正在将谷歌地图 V2 集成到我的应用程序中。我可以获取当前位置,也可以在 onLocationChange 发生时获取地理位置。但我想在我得到的地理指针中标记一条线。这可能与版本2有关吗?你们能指导我吗?我对这个话题很陌生。提前致谢。

 Marker startPerc = googleMap.addMarker(new MarkerOptions() .position(coordinate).title("On the way").snippet("Hello Apps").icon(BitmapDescriptorFactory.fromResource(R.drawable.myicon)));
         //  startPerc.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.my icon));

使用此代码,我可以将图像映射到纬度和经度。但我想在上面画一条线。

4

2 回答 2

1

阅读开发人员指南确实有助于您入门。

无论如何,你需要的是一个Polyline.

于 2013-06-13T09:42:12.297 回答
0

我希望这可以帮助您:- 创建新的 Overlay 类作为 RoutePathOverlay:-

public class RoutePathOverlay extends Overlay {

        private int _pathColor;
        private final List<GeoPoint> _points;
        private boolean _drawStartEnd;

        public RoutePathOverlay(List<GeoPoint> points) {
                this(points, Color.RED, true);
        }

        public RoutePathOverlay(List<GeoPoint> points, int pathColor, boolean drawStartEnd) {
                _points = points;
                _pathColor = pathColor;
                _drawStartEnd = drawStartEnd;
        }

        private void drawOval(Canvas canvas, Paint paint, Point point) {
                Paint ovalPaint = new Paint(paint);
                ovalPaint.setStyle(Paint.Style.FILL_AND_STROKE);
                ovalPaint.setStrokeWidth(2);
                int _radius = 6;
                RectF oval = new RectF(point.x - _radius, point.y - _radius, point.x + _radius, point.y + _radius);
                canvas.drawOval(oval, ovalPaint);               
        }

        public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
                Projection projection = mapView.getProjection();
                if (shadow == false && _points != null) {
                        Point startPoint = null, endPoint = null;
                        Path path = new Path();
                        //We are creating the path
                        for (int i = 0; i < _points.size(); i++) {
                                GeoPoint gPointA = _points.get(i);
                                Point pointA = new Point();
                                projection.toPixels(gPointA, pointA);
                                if (i == 0) { //This is the start point
                                        startPoint = pointA;
                                        path.moveTo(pointA.x, pointA.y);
                                } else {
                                        if (i == _points.size() - 1)//This is the end point
                                                endPoint = pointA;
                                        path.lineTo(pointA.x, pointA.y);
                                }
                        }

                        Paint paint = new Paint();
                        paint.setAntiAlias(true);
                        paint.setColor(_pathColor);
                        paint.setStyle(Paint.Style.STROKE);
                        paint.setStrokeWidth(5);
                        paint.setAlpha(90);
                        if (getDrawStartEnd()) {
                                if (startPoint != null) {
                                        drawOval(canvas, paint, startPoint);
                                }
                                if (endPoint != null) {
                                        drawOval(canvas, paint, endPoint);
                                }
                        }
                        if (!path.isEmpty())
                                canvas.drawPath(path, paint);
                }
                return super.draw(canvas, mapView, shadow, when);
        }

        public boolean getDrawStartEnd() {
                return _drawStartEnd;
        }

        public void setDrawStartEnd(boolean markStartEnd) {
                _drawStartEnd = markStartEnd;
        }
}

然后在你的 mapActivity 中调用这个类: -

List<GeoPoint> path = new ArrayList<GeoPoint>(); //List of GeoPoints

path.add(point);

mapView.getOverlays().add(new RoutePathOverlay(path));
于 2013-06-13T10:18:23.910 回答