Я использую MapActivity
. Я беру набор GeoPoints с веб-сервера с использованием JSON и анализирую его для декодирования кода Polyline в гео-точки (широта и долгота), которые затем сохраняются в 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);
; Может кто-нибудь мне помочь? Чтобы он работал быстро, даже если пользователь увеличил его вручную.