Я работаю над простым приложением Android для прокладки маршрутов на карте. Все идет хорошо, но у меня проблема при масштабировании на моем Samsung Galaxy S2. Он отлично работает на Galaxy S3, поэтому мне интересно, связано ли это с управлением памятью на устройстве с низким разрешением. Он также отлично работает на эмуляторе.Наложение MapView MapView исчезает при масштабировании
Вот эквивалентный код, расположенный в накладках OnDraw метода, просто конденсируется для размещения здесь:
Point current = new Point();
Path path = new Path();
Projection projection = mapView.getProjection();
Iterator<GeoPoint> iterator = pointList.iterator();
if (iterator.hasNext()) {
projection.toPixels(iterator.next(), current);
path.moveTo((float) current.x, (float) current.y);
} else return path;
while(iterator.hasNext()) {
projection.toPixels(iterator.next(), current);
path.lineTo((float) current.x, (float) current.y);
}
Paint roadPaint = new Paint();
roadPaint.setAntiAlias(true);
roadPaint.setStrokeWidth(8.0f);
roadPaint.setColor(Color.BLACK);
roadPaint.setStyle(Paint.Style.STROKE);
canvas.drawPath(path, roadPaint);
Это не слишком отличается от большинства примеров коды с плавающей вокруг для этого. Мне просто интересно, может ли кто-нибудь подтвердить мои подозрения и сообщить, есть ли что-нибудь, что я могу сделать с точки зрения конфигурации или настроек, которые я могу сделать, чтобы заставить рисовать на всех уровнях масштабирования?
Заранее спасибо.
Приветствия, Натан
Да, функция разделена на кучу методов, которые инкапсулируют каждый шаг. Замечательно читать в среде IDE, но слишком много для публикации. У меня есть версия, которая кэширует путь и переводит его, но я удалил его, пока не выясню, почему он исчезает. Я подозреваю, что это связано с верхней и нижней частью пути, как вы обнаружили с вашими прямоугольниками. setStrokeJoin и setStrokeCap могут быть хорошей резервностью. Забавно, что вы упоминаете, что это медленнее, это быстрее, чем моя реализация текущего пути, просто уродливее. Cheers, Nathan – thenathanjones
Вы попали в гвоздь на голове. Когда верхний и нижний пределы пути выходят из экрана, путь не нарисован. Это не происходит с решением линий, поскольку оно всегда находится на экране. Теперь решите, что с ним делать. – thenathanjones
Все еще не объясняет, почему это происходит только на моем устройстве, а не на эмуляторе или Galaxy S3. – thenathanjones