我正在研究一個簡單的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