我将尝试将我的问题分解为一个简单的示例。我试图画一个恰好位于视图中间的圆圈。为此,我在 Overlay 的 draw 方法中使用了以下代码:
GeoPoint mapCenter = mapView.getMapCenter();
Projection projection = mapView.getProjection();
int centerLat = mapCenter.getLatitudeE6();
int centerLong = mapCenter.getLongitudeE6();
Point pCircleCenter = new Point();
GeoPoint circleCenter = new GeoPoint(centerLat, centerLong);
projection.toPixels(circleCenter, pCircleCenter);
canvas.drawCircle(pCircleCenter.x, pCircleCenter.y, 30, testPaint);
当我运行代码时,圆圈正好在屏幕的中间。当我垂直滚动时,它也停留在中间,但是当我水平滚动时,圆圈在滚动方向上略微移动。几个卷轴后,圆圈完全不在位置,而不是停留在中间。
(这只是我的问题的简化版本,但我需要以这种方式获得中间,而不是仅仅将其粘贴到视图的中间。)