0

マップにマークを追加しましたが、ズームインすると左に移動し (最大ズームインでは正しい場所をマークします)、ズームアウトすると右に移動します (最大ズームアウトでは 3000Km のようにマークされます)。適切な場所)。

onCreate の前にマーカーを描画するクラスは次のとおりです (画像は 62px wx 70px h):

class MapOverlay extends com.google.android.maps.Overlay
    {
        @Override
        public boolean draw(Canvas canvas, MapView map, boolean shadow, long when) 
        {
            super.draw(canvas, map, shadow);                   

            Point screenPts = new Point();
            map.getProjection().toPixels(point, screenPts);

            Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.mapmarker);            
            canvas.drawBitmap(bmp, screenPts.x + 50, screenPts.y - 70, null);         
            return true;
        }
    } 

クラスを呼び出すために使用するコードは次のとおりです。

        latitud = loc.getLatitude();
            longitud = loc.getLongitude();
            precision = loc.getAccuracy();

        controlMapa = map.getController();
        point = new GeoPoint((int) (latitud * 1E6), (int) (longitud * 1E6));

        controlMapa.animateTo(point);
        controlMapa.setZoom(17);

        MapOverlay mapOverlay = new MapOverlay();
        List<Overlay> listOfOverlays = map.getOverlays();
        listOfOverlays.clear();
        listOfOverlays.add(mapOverlay);

        map.invalidate();

どうしたの?ズームが変わるたびに正しいポイントに移動するにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

1

解決しました!追加する必要がありました:

canvas.drawBitmap(bmp, screenPts.x - (bmp.getWidth() / 2), screenPts.y - bmp.getHeight(), new Paint());

それ以外の:

canvas.drawBitmap(bmp, screenPts.x + 50, screenPts.y - 70, null); 
于 2012-05-30T11:10:41.223 に答える