当我有大变焦时,我遇到了应用程序滞后的问题。我有带有标记和区域的地图,当我放大地图时,地图会滞后。我一直在寻找解决方案,但我没有找到。
请帮我处理这段代码。
我不知道如何解决它。
这是我的代码:
public class LiniaOverlay extends Overlay {
private List<GeoPoint> m_areas;
private Paint m_paintFill;
private Paint m_paintStroke;
private static final int ALPHA = 0x30ffffff;
private static int COLORS = Color.YELLOW;
Path areaPaths;
static {LiniaOverlay.COLORS &= LiniaOverlay.ALPHA;}
public LiniaOverlay(final List<GeoPoint> points) {
m_areas = points;
m_paintFill = new Paint();
m_paintFill.setStyle(Paint.Style.FILL);
m_paintStroke = new Paint(Paint.ANTI_ALIAS_FLAG);
m_paintStroke.setStyle(Style.STROKE);
m_paintStroke.setAntiAlias(true);
m_paintStroke.setStrokeWidth(3);
}
@Override
public void draw(final Canvas canvas, final MapView mapView, final boolean shadow) {
super.draw(canvas, mapView, shadow);
if (shadow) {
return;
}
Projection projection = mapView.getProjection();
areaPaths = getPath(projection, m_areas);
drawPaths(canvas, areaPaths);
}
private Path getPath(final Projection projection, final List<GeoPoint> areas) {
Path path = new Path();
path.setFillType(Path.FillType.EVEN_ODD);
Iterator<GeoPoint> it = areas.iterator();
Point point = nextDrawPoint(projection, it);
path.moveTo(point.x, point.y);
while (it.hasNext())
{
point = nextDrawPoint(projection, it);
path.lineTo(point.x, point.y);
}
path.close();
return path;
}
private void drawPaths(final Canvas canvas, final Path path) {
int currentColor = LiniaOverlay.COLORS;
m_paintStroke.setColor(currentColor & 0xff7f7f7f);
canvas.drawPath(path, m_paintStroke);
int currentColor2 = LiniaOverlay.COLORS;
m_paintFill.setColor(currentColor2);
canvas.drawPath(path, m_paintFill);
}
private Point nextDrawPoint(final Projection projection, final Iterator<GeoPoint> it) {
GeoPoint geo = it.next();
Point p = new Point();
projection.toPixels(geo, p);
return p;
}
}
请帮我。