1

H MapField に 2 つのカスタム位置マーカーを描画するコードを作成しました。しかし、ズームインしてズームアウトすると、ロケーションマーカーは同じサイズになります。ズームレベルに応じてロケーションマーカーを調整したいです。誰か私がこれを着るのを手伝ってくれませんか??

BR スッピ

編集:

これまでのところ、これを行うことができます。

 mPointDest = new XYRect[mPoints.length];
            for (int i = 0; i < mPoints.length; i++) {
            XYPoint fieldOut = new XYPoint();
            convertWorldToField(mPoints[i], fieldOut);
            mIcon = Bitmap.getBitmapResource("location.png");
        int imgW = mIcon.getWidth();
        int imgH = mIcon.getHeight();
        mPointDest[i] = new XYRect(fieldOut.x - imgW / 2,
                    fieldOut.y - imgH, imgW, imgH);
            graphics.drawBitmap(mPointDest[i], mIcon, 0, 0);

およびズームの場合:

protected boolean keyChar(char character, int status, int time) 
    {
        // 'i' will zoom in.
        if (character == 'i') 
        {

                mMapField.setZoom(Math.max(mMapField.getZoom() - 1, mMapField.getMinZoom()));
                return true;

        }
        // 'o' will zoom out
        if (character == 'o') 
        {

            mMapField.setZoom(Math.min(mMapField.getZoom() + 1, mMapField.getMaxZoom()));
            return true;
        }

        return super.keyChar(character, status, time);
    }

この後、ズーム レベルに基づいてビットマップを調整する方法を考えています。誰かが私にアイデアを教えてもらえますか??

4

1 に答える 1

1

ズームはマップ自体にのみ影響します。独自のグラフィックスのサイズを変更したい場合は、手動でスケーリングする必要があります。たとえば、プロジェクトに複数のサイズの「location.png」リソースを含めてから、ズーム レベルに基づいて適切なサイズを選択するか、Bitmap.scaleInto()メソッドを使用してその場でグラフィックをズームすることができます。

オンザフライの方法では、複数のサイズの元のグラフィックを含めるよりも品質の低い結果が得られることに注意してください (プロジェクトに含めるために縮小している高解像度の元の画像があると仮定しています)。

于 2011-08-02T12:37:10.770 に答える