我有一个程序,我想在两点之间划一条线。然后我想在另外两点之间绘制另一条线。当我画一条线时,它会移除前一条线。我试过让两条线都有不同的叠加层,但它仍然会移除旧线并放入新线。我是否可以阻止这种情况的发生?如何使所有叠加层保持不变?任何帮助将不胜感激。
Activity类中的Overlay类。
这是在onKeyDown()
case KeyEvent.KEYCODE_8:
twoPoints.add(a);
twoPoints.add(b);
MapOverlay newOverlay = new MapOverlay();
listOfOverlays = mapView.getOverlays();
listOfOverlays.add(newOverlay);
mapView.postInvalidate();
System.out.println("Test overlays 1 Point");
break;
case KeyEvent.KEYCODE_9:
twoPoints.remove(1);
twoPoints.add(c);
MapOverlay newOverlay1 = new MapOverlay();
listOfOverlays.add(newOverlay1);
mapView.postInvalidate();
System.out.println("Test Overlays 2 Point");
break;
这是Overlay课程:
public class MapOverlay extends com.google.android.maps.Overlay
{
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
{
super.draw(canvas,mapView,shadow);
//-- Create new paint object --
Paint mPaint = new Paint();
mPaint.setDither(true);
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(2);
//System.out.println("Point 1");
//System.out.println("Point 2");
for(int i =0; i < twoPoints.size()-1;i++)
{
Point screenPt1 = new Point();
mapView.getProjection().toPixels(twoPoints.get(i), screenPt1);
Point screenPt2 = new Point();
mapView.getProjection().toPixels(twoPoints.get(i+1), screenPt2);
canvas.drawLine(screenPt1.x, screenPt1.y, screenPt2.x, screenPt2.y, mPaint);
System.out.println("Point 3");
}
//mapView.invalidate();
}
}
一段时间以来我一直很困惑。
答案 0 :(得分:0)
twoPoint 在哪里定义?问题似乎是两个Overlays都使用相同的点 twoPoint 数组来完成他们的工作。
答案 1 :(得分:0)
Eyespyus在正确的轨道上问题是我在活动中有Overlay类并且正在更改两者都使用的数组。将课程移到活动之外可以解决问题。
这是一个非常愚蠢的错误,我感谢大家花时间看这个,我对Android很新。