0

Overlayグーグルマップで決勝戦を組むチャンスはあるのだろうか。ズーム中に十字線が動かないように、このように十字線を設定します。

コード:

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.map_view);
            initData();

            mapView = (MapView) findViewById(R.id.mapView);

            mapView.setSatellite(true);
            mapView.setTraffic(true); 
            mapView.setBuiltInZoomControls(true);

            controller = mapView.getController();
            controller.animateTo(coordinate);
            controller.setZoom(18);

    // TODO:
            CrossHairsOverlay chOverlay = new CrossHairsOverlay();

    // Pin
            MapOverlay mapOverlay = new MapOverlay();
            mapOverlay.setPointToDraw(coordinate);

            List<Overlay> listOfOverlays = mapView.getOverlays();
            listOfOverlays.clear();
            listOfOverlays.add(mapOverlay);
            listOfOverlays.add(chOverlay);
        }

クロスヘア:

    public class CrossHairsOverlay extends Overlay {

        public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
            super.draw(canvas, mapView, shadow);
            Projection projection = mapView.getProjection();
            Point centerPoint = projection.toPixels(mapView.getMapCenter(), null);

            Bitmap crossHairs = BitmapFactory.decodeResource(getResources(), R.drawable.cross_hair);
            canvas.drawBitmap(crossHairs, centerPoint.x - (int)(27 * dpi + 0.5f), centerPoint.y - (int)(27 * dpi + 0.5f), new Paint());
            return true;
        }
    }

このように使うと、ズームが終わってから最近になります。左右のドラッグは正しく機能します。「ZoomListener」を設定して、いつも再描画したくはありません。これを行うための別の解決策があることを願っています。

ありがとう

4

1 に答える 1

1

あなたの質問を完全に理解していないことを許してください...

ただし、投影を使用せずに単純なポイントに描画するには、ビットマップをマップビューの中心に厳密に描画するだけです。

すなわち..。

//調整された定数も作成します。

canvas.drawBitam(bitmap、center.x-(imageWidth / 2)、center.y-(imageHeight / 2)、new Paint());

ここで、center.xとcenter.yは次のようになります。

ポイントの中心=newPoint(canvas.getWidth()/ 2、canvas.getHeight()/ 2);

また、すべてのonDraw!でビットマップをリロードしないでください。メモリリークftl;)。

于 2012-05-28T15:46:08.520 に答える