私はを使用していMapActivity
ます。JSONを使用してWebサーバーからGeoPointのセットを取得し、それを解析してポリラインコードをジオポイント(緯度と経度)にデコードし、に保存しArrayList<Geopoints>
ます。
これらのポイントは、に描画されますMapActivity
。
私の問題は、私のArrayList<Geopoints>
サイズが2000を超えているため、効率的に実行されていないことです。どうすれば効率を上げることができますか?
描画中に行ったサンプルコードは
ArrayList'<'Geopoints> mGeoPoints;
サイズを言うmGeoPoints=2000;
オーバーレイによって拡張されたクラス。そのクラスのいくつかのメソッドは、私がどのように書いているかです。
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);
。誰かが私を助けることができますか?ユーザーが手でズームしても高速に動作するようにします。