2

我在谷歌地图上工作。我想在 5 到 6 个节点之间创建一个路径,我的意思是在点之间画一条线。

以下类是绘图的内部类:

class MyOverlay extends Overlay{
    public void draw(Canvas canvas, MapView mapv, boolean shadow){
        super.draw(canvas, mapv, shadow);

        Paint  mPaint = new Paint();
        mPaint.setDither(true);
        mPaint.setColor(Color.RED);
        mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        mPaint.setStrokeCap(Paint.Cap.ROUND);
        mPaint.setStrokeWidth(2);

        GeoPoint gP1 = new GeoPoint(19240000,-99120000);
        GeoPoint gP2 = new GeoPoint(37423157, -122085008);
        GeoPoint gP3 = new GeoPoint(20000000 , -50000000) ; 
        GeoPoint[] G = new GeoPoint[3] ;
        G[1] = gP1 ; 
        G[2] = gP2 ; 
        G[3] = gP3 ; 
        Point p1 = new Point();
        Point p2 = new Point();
        Point p3 = new Point () ; 
        Path path = new Path();

        projection.toPixels(gP1, p1);
        projection.toPixels(gP2, p2);
        projection.toPixels(gP3, p3) ; 
        //path.moveTo(p2.x, p2.y);
        //path.lineTo(p1.x,p1.y);
        //path.lineTo(p3.x, p3.y) ;       
        //canvas.drawLines(pts , mPaint) ; 
        canvas.drawPath(path, mPaint);
    }
}

这两行代码是onCreate()外部类中方法的代码:

 projection = mapView.getProjection();

 mapOverlays.add(new MyOverlay());
4

2 回答 2

1

上面的答案是正确的 - 问题是你没有Point在你的Path. 有关与您正在做的事情完全相同的事情,请参阅此答案。此外,draw()每次地图需要重新绘制路线时都会执行,这基本上是地图移动的任何时候。我有一个应用程序,我在上面绘制路线MapView,让我告诉你,如果你的路线变长,你的地图可能会变得迟钝。所以我会把你的Paint东西放在你的类的构造函数中,这样你就不会在每次重绘路由时都创建一个新对象。另外,如果您打算绘制多个点,我会使用for类似于此的循环:

Path path = new Path();
for(GeoPoint g : arrayOfGeoPoints) {
            Point next = new Point();
            projection.toPixels(g, next);
            path.lineTo(next.x, next.y);
            path.moveTo(next.x, next.y);
        }
canvas.drawPath(path, myPaint);

它很简单,但可以快速有效地迭代多个点。

祝你好运!

于 2012-07-05T14:36:06.237 回答
0

我对 GeoPoint 或 MapView 不熟悉,所以您可能还有其他问题,但我可以指出显而易见的:

您已注释掉生成路径的行,因此您正在绘制一个空路径。path.如果您取消注释以(但保留注释)开头的三行,假设没有其他错误canvas.drawLines(...),您应该有一行 from p2top1和另一行 from p1to 。p3

于 2012-07-05T11:32:39.183 回答