gpt4 book ai didi

java - 在 ItemizedOverlay 的绘制方法中获取变量值的首选方法是什么?

转载 作者:行者123 更新时间:2023-12-01 15:51:15 27 4
gpt4 key购买 nike

使用 GeoPoints 的 ArrayList,我希望在 map 上绘制点并用线连接它们。我的“点”部分可以工作,但线条不行。我的 ItemizedOverlay 类:

private class myItemizedOverlay extends ItemizedOverlay<OverlayItem>
{
private ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
private ArrayList<GeoPoint> geoPoints = new ArrayList<GeoPoint>();
private int color;

public myItemizedOverlay (Drawable marker, ArrayList<GeoPoint> gp, int c)
{
super(marker);
geoPoints = gp;
color = c;

boundCenter(marker);

for (int i = 0; i < geoPoints.size() - 1; i++)
{
items.add(new OverlayItem(geoPoints.get(i)));
}

populate();
}

@Override
protected OverlayItem createItem(int i)
{
return items.get(i);
}

@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
{
super.draw(canvas, mapView, false);

Paint paint = new Paint();
paint.setColor(color);
paint.setDither(true);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(2);

Point p1 = new Point();
Point p2 = new Point();

for (int i = 1; i < geoPoints.size() - 1; i++)
{
mapView.getProjection().toPixels(geoPoints.get(i), p1);
int x1 = p1.x;
int y1 = p1.y;

mapView.getProjection().toPixels(geoPoints.get(i - 1), p2);
int x2 = p2.x;
int y2 = p2.y;

canvas.drawLine(x1, y1, x2, y2, paint);
}
}

@Override
public int size()
{
return items.size();
}
}

调用方式:

myItemizedOverlay mo = new myItemizedOverlay(marker, geoPoints, color);
mapView.getOverlays().add(mo);

我发现重写的“draw”方法中的“geoPoints”为空,我不明白为什么。更令人困惑的是,“颜色”/不是/空,并且“颜色”和“geoPoints”都以相同的方式分配。有人可以推荐一个解决方案吗?

最佳答案

您正在将 gp 分配给 geoPoints。我预计您正在其他地方清除gp。您应该复制一份:

geoPoints = new ArrayList<GeoPoint>(geoPoints.size());
for (int i = 0; i < geoPoints.size() - 1; i++)
{
geoPoints.add(gp.get(i));
items.add(new OverlayItem(geoPoints.get(i)));
}

尝试一下并让我知道它是如何工作的。

关于java - 在 ItemizedOverlay 的绘制方法中获取变量值的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5986410/

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