0

私はOSMdroidを使用しています。Overlay クラスを拡張し、必要に応じて draw メソッドをオーバーライドしました。そして、マーカーの配置に問題があります。初めてそれらを表示すると、位置が間違っています。しかし、ズームを開始するとそれらが移動し、数回ズームした後、正しいローカリゼーションが得られます。

これが私のコードです:

protected final Rect mRect = new Rect();
protected Point mScreenPts = new Point();

@Override
protected void draw(Canvas c, MapView osmv, boolean shadow) {
    Projection pj = osmv.getProjection();

    synchronized (mInternalItemList) {
        if (shadow && !mInternalItemList.isEmpty()) {
            for(int i = 0; i < mInternalItemList.size(); i++) {
            CustomizedItem customized = mInternalItemList.get(i);

                pj.toMapPixels(new GeoPoint(customized.getLatitude(),
                                customized.getLongitude()), mScreenPts);            

                boundToHotspot(customized.getDrawable(), HotspotPlace.LOWER_LEFT_CORNER);

                Drawable draw = customized.getDrawable();

                draw.copyBounds(mRect);
                draw.setBounds(mRect.left + mScreenPts.x, mRect.top + mScreenPts.y, 
                           mRect.right + mScreenPts.x, mRect.bottom + mScreenPts.y);

                draw.draw(c);
                draw.setBounds(mRect);
            }
        }
    }
}
4

0 に答える 0