我正在使用一个MapActivity
. 我使用 JSON 从网络服务器获取一组 GeoPoints 并将其解析以将折线代码解码为地理点(纬度和经度),然后将其存储在ArrayList<Geopoints>
.
然后将这些点绘制在MapActivity
.
我的问题是,由于我的ArrayList<Geopoints>
尺寸超过 2000,它运行效率不高。如何提高效率?
我在绘图时所做的示例代码是
ArrayList'<'Geopoints> mGeoPoints;
说大小mGeoPoints=2000;
在由 Overlay 扩展的类中。我写作的那个类的一些方法是。
public boolean draw(Canvas canvas, MapView mapView, boolean shadow,long when) {
super.draw(canvas, mapView, shadow, when);
drawPath(mapView, canvas);
return true;
}
public void drawPath(MapView mv, Canvas canvas) {
int x1 = -1, y1 = -1, x2 = -1, y2 = -1;
Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(3);
for (int i = 0; i < mGeoPoints.size(); i++) {
Point point = new Point();
mv.getProjection().toPixels(mGeoPoints.get(i), point);
x2 = point.x;
y2 = point.y;
if (i > 0) {
canvas.drawLine(x1, y1, x2, y2, paint);
}
x1 = x2;
y1 = y2;
}
}
这段代码工作正常。它在地图上正确绘制。当我缩放地图或移动地图应用程序时挂起。
我已将缩放级别设置为 16 mapController.setZoom(16);
;谁能帮我?即使用户手动缩放它,也让它运行得很快。