問題を簡単な例に分解してみます。ビューのちょうど真ん中にとどまる円を描こうとしました。このために、オーバーレイの 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);
コードを実行すると、円は画面の真ん中にあります。また、縦にスクロールすると真ん中にとどまりますが、横にスクロールすると、円はスクロールされた方向にわずかに移動します。数回スクロールした後、円は中央に留まらず、完全に位置がずれています。
(これは私の問題の単純化されたバージョンですが、ビューの中央に貼り付けるのではなく、この方法で中央を取得する必要があります。)