0
GeoPoint의 ArrayList를 사용하여지도에 점을 그려서 선으로 연결하려고합니다. "포인트"파트가 작동하지만 라인은 작동하지 않습니다. 내 ItemizedOverlay 클래스 :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);
나는 "geoPoints는"오버라이드 "그리는"방법 비어 있음을 찾는거야, 나는 이유를 알아낼 수 없습니다. 더 혼란스럽게도 "색상"은 비/비어 있고 "색상"과 "지리적 포인트"는 같은 방식으로 지정됩니다. 아무도 해결책을 추천 할 수 있습니까?
네 말이 맞아, 그건 내 임무 운영자 야. 감사 Femi! – wirbly