for 루프를 사용하여 배열을 통해 점 사이의 선을 그리려하고 있는데 몇 가지 문제가있는 것 같습니다. 나는 for 루프를 만들지 만 배열을 반복하지만 projection.toPixels (arraylist, point)를 사용하려고 할 때; 그것은 오류를 던지기를 계속한다. 나는 다른 사람들이 그것을 사용하고 오류가 발생하는 것 같다 해달라고 보았다, 도와주세요 :안드로이드 - 배열을 통해 점 사이의 선 그리기
을 내가 작성한 코드는 다음과 같습니다 :}
public class MyPositionOverlay extends ItemizedOverlay<OverlayItem> {
public List<GeoPoint> geoPointsArrayList = new ArrayList<GeoPoint>();
public ArrayList<OverlayItem> overlayItemList = new ArrayList<OverlayItem>();
Context context;
int listSize = overlayItemList.size();
//Vector <overlayItemList> vectorList;
public MyPositionOverlay(Drawable marker, Context c) {
super(boundCenterBottom(marker));
// TODO Auto-generated constructor stub
populate();
context = c;
}
private final int mRadius = 5;
Location location;
public Location getLocation() {
return location;
}
public void setLocation(Location location) {;
this.location = location;
}
public void addItem(GeoPoint point, String title, String snippet){
OverlayItem newItem = new OverlayItem(point, title, snippet);
overlayItemList.add(newItem);
populate();
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
Projection projection = mapView.getProjection();
Double latitude = location.getLatitude()*1E6;
Double longitude = location.getLongitude()*1E6;
GeoPoint geoPoint;
geoPoint = new
GeoPoint(latitude.intValue(),longitude.intValue());
GeoPoint prePoint = null, currentPoint = null;
Path linePath = new Path();
Point screenCoords = new Point();
Point screenCoords2 = new Point();
Point lastPoint = new Point();
Point linePoint = new Point();
if (shadow == false) {
// Get the current location
// Convert the location to screen pixels
Point point = new Point();
projection.toPixels(geoPoint, point);
RectF oval = new RectF(point.x - mRadius, point.y - mRadius,
point.x + mRadius, point.y + mRadius);
// Setup the paint
Paint paint = new Paint();
paint.setARGB(250, 255, 255, 255);
paint.setAntiAlias(true);
paint.setFakeBoldText(true);
//Text set up
Paint textPaint = new Paint();
textPaint.setColor(Color.BLACK);
Paint backPaint = new Paint();
backPaint.setARGB(175, 50, 50, 50);
backPaint.setAntiAlias(true);
RectF backRect = new RectF(point.x + 2 + mRadius,
point.y - 3*mRadius,
point.x + 65, point.y + mRadius);
// Draw the marker
canvas.drawOval(oval, paint);
canvas.drawRoundRect(backRect, 5, 5, backPaint);
canvas.drawText("Here I Am",
point.x + 2*mRadius, point.y,
textPaint);
for (int j = 1; j < overlayItemList.size();j++){
linePath.setLastPoint(4, j - 1);
linePath.lineTo(4, j);
}
linePath.close();
canvas.drawPath(linePath, linePaint);
} // End of If statement
super.draw(canvas, mapView, shadow);
} // End of draw method
public void drawLine(MapView mapView){
System.out.println("Drawing line");
Path linePath = new Path();
Canvas lineCanvas = new Canvas();
Projection lineProjection = mapView.getProjection();
//Line Settings
Paint linePaint = new Paint();
linePaint.setStyle(Style.FILL);
linePaint.setStrokeWidth(2);
linePaint.setARGB(0, 0, 0, 255);
linePaint.setAntiAlias(true);
linePaint.setStrokeJoin(Paint.Join.ROUND);
linePaint.setStrokeCap(Paint.Cap.ROUND);
/****************************************************************************/
for (int k = 0; k<overlayItemList.size(); k++){
if(k == overlayItemList.size() -1){
break;
}
Point from = new Point();
Point to = new Point();
lineProjection.toPixels(overlayItemList.get(k), from);
lineProjection.toPixels(overlayItemList.get(k + 1), to);
linePath.moveTo(from.x, from.y);
linePath.lineTo(to.x, to.y);
}
lineCanvas.drawPath(linePath, linePaint);
}//End of drawLine method
*
내가 오류를 읽어야
은 다음과 같습니다 메소드 toPixels (GeoPoint의, 포인트) 투영법은 인수에 적용 할 수 없습니다 (OverlayItem, Point) http://stackoverflow.com/questions/5243146/i-want-to-draw-path-between-multiple-geopoins의 코드를 사용하고 있습니다. 안드로이드,하지만 난 틀린 것을 볼 수 없다. – MurphyApps
ih ave 도이 코드를 본 : http : //stackoverflow.com/questions/3036139/android-drawing-path-as-overlay-on-mapview 내 것과 같은 것, 내 arraylists ??? – MurphyApps