У меня есть вид карты, на котором я добавляю несколько оверлеев, каждый с линией рисования между геопунктами.В качестве исходных данных у меня есть объект ArrayList, и для каждых двух следующих местоположений я указываю строку.
Метод с добавлением оверлеев
public void showPath(ArrayList<Location> log) {
int count = 0;
mapView.getOverlays().clear();
for (int i = 0; i < (log.size() - 1); i++) {
GeoPoint point = new GeoPoint((int) (log.get(i).getLatitude() * 1E6),(int) (log.get(i).getLongitude() * 1E6));
GeoPoint point2 = new GeoPoint((int) (log.get(i + 1).getLatitude() * 1E6),(int) (log.get(i + 1).getLongitude() * 1E6));
MapOverlay mapOvlay = new MapOverlay(point, point2); //vytvori overlay s carou mezi body
mapView.getOverlays().add(mapOvlay);
count++;
}
app.getToast("mumbers of read / display items: " + Integer.toString(orgSize) + " / " + Integer.toString(count));
Log.d(TAG, "mumbers of read / display items: " + orgSize + " / " + count);
mapView.setSatellite(true);
GeoPoint point0 = new GeoPoint((int) (log.get(0).getLatitude() * 1E6),(int) (log.get(0).getLongitude() * 1E6)); //vycentruje mapu na pocatek zaznamu
MapController mapController = mapView.getController();
mapController.setCenter(point0);
mapView.setEnabled(true);
}
Это метод draw () в MapOverlay, расширяющий оверлей
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
super.draw(canvas, mapView, shadow);
Paint paint;
paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(6);
paint.setAntiAlias(true);
Point pt1 = new Point();
Point pt2 = new Point();
Projection projection = mapView.getProjection();
projection.toPixels(Gpt1, pt1);
projection.toPixels(Gpt2, pt2);
canvas.drawLine(pt1.x, pt1.y, pt2.x, pt2.y, paint);
return true;
}
Проблема в том, что я рисую много линий около 500использование карты очень медленное, особенно панорамирование и масштабирование.Я попытался нарисовать линию в одном наложении и добавить ее на карту, но результат был тот же.У кого-нибудь есть идеи, как это оптимизировать или как-то нарисовать линию?Мне не нужно оптимизировать добавление элементов на карту, чтобы сделать перемещение по карте более плавным.Заранее спасибо.