我正在研究一个简单的Android应用程序,用于绘制地图上的路线。一切进展顺利,但放大我的三星Galaxy S2时遇到了问题。它在Galaxy S3上运行良好,所以我想知道它是否与低配置设备上的内存管理有关。它也可以在模拟器上正常工作。Android 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可能是一个很好的后备。有趣的是你提到它比较慢,它比我当前的路径实现方式快得多,只是更加丑陋。 干杯,弥敦道 – thenathanjones
你击中了头部。一旦路径的顶部和底部离开屏幕,路径就不会被绘制。线条解决方案不会发生这种情况,因为它始终在屏幕上。现在决定如何处理它。 – thenathanjones
仍然没有解释为什么只发生在我的设备上,而不是仿真器或Galaxy S3上。 – thenathanjones