缩小时,MapView标记会略微移动

时间:2012-11-10 04:23:41

标签: android google-maps android-mapview itemizedoverlay

我正在为我的应用程序使用Google Map。使用this guide from Google itself中的确切代码,我设法使用ItemizedOverlay在地图上放置了一个标记。

但是当我缩小时,标记会稍微向左移动。 Circle Radius Overlay保留在原位

以下是我的应用的简介:

Zoomed in {--------- {0}}

在真正的Google地图应用中不会发生这种情况:

Zoomed out {---- {0}}

尝试使用硬编码的Geo点,但标记仍然略微移动。有人知道这个的解决方案吗?

由于

[编辑]

这是我的ItemizedOverlay类

public class MyItemizedOverlay extends ItemizedOverlay {
    private ArrayList<OverlayItem> overlays = new ArrayList<OverlayItem>();
    Context context;

    public MyItemizedOverlay(Drawable marker) {
        super(boundCenterBottom(marker));
    }

    public MyItemizedOverlay(Drawable marker, Context context) {
        super(boundCenterBottom(marker));
        context = context;
    }

    public void addOverlay(OverlayItem overlay) {
        overlays.add(overlay);
        populate();
    }

    @Override
    protected OverlayItem createItem(int i) {
        return g_overlays.get(i);
    }

    @Override
    public int size() {
        return overlays.size();
    }

    protected boolean onTap(int i) {
        //...
    }
}

这是调用上述类

的代码
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.map_pin);
MyItemizedOverlay mio = new MyItemizedOverlay(drawable, this);
OverlayItem oi = new OverlayItem(mGeoPoint, "Your location", "");
mio.addOverlay(oi);
mapOverlays.add(mio);

1 个答案:

答案 0 :(得分:0)

刚刚发现ItemizedOverlay构造函数

中的原因是boundCenterBottom

我将其更改为boundCenter并在缩小后保持原位

public MyItemizedOverlay(Drawable marker) {
    super(boundCenter(marker));
}