缩放时,Google地图的标记会移动

时间:2012-05-30 09:55:24

标签: android google-maps coordinates google-maps-markers

我已经在地图上添加了一个标记但是当我放大它时会向左移动(最大放大时标记到正确的位置)当我缩小它时会向右移动(最大缩小时)它从正确的地方标记为3000公里。

这是在onCreate之前绘制标记的类(图像为62px w x 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();

问题是什么?每次缩放变化时如何让它们移动到正确的位置?

提前谢谢!

1 个答案:

答案 0 :(得分: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);