gpt4 book ai didi

java - 在点之间绘制路径

转载 作者:行者123 更新时间:2023-11-30 11:43:18 25 4
gpt4 key购买 nike

我在 Google map 中工作。我想在 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());

最佳答案

以上答案是正确的 - 问题是您没有将 Point 添加到您的 Path。参见 this回答与您正在做的事情完全相似的事情。此外,每次 map 需要重新绘制路线时都会执行 draw(),这基本上是 map 移动的任何时候。我有一个应用程序,我在 MapView 上绘制路线> 让我告诉你,如果你的路线变长,你的 map 就会变得迟钝。所以我会把你的 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);

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

祝你好运!

关于java - 在点之间绘制路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11342661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com