调整位置标记放大并缩小Mapfield

时间:2011-08-01 06:43:00

标签: blackberry blackberry-maps

ħ 我编写了一个代码来在MapField上绘制两个自定义位置标记。但是当我放大和缩小时,位置标记具有相同的大小,我希望位置标记根据缩放级别进行调整。有人可以请我帮忙吗?

BR, Suppi

编辑:

到目前为止能够做到这一点,

 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);
    }

此后我想知道如何根据缩放级别调整位图。有人可以给我一些想法吗?

1 个答案:

答案 0 :(得分:1)

缩放仅影响地图本身。如果要更改自己图形的大小,则需要自己手动缩放。例如,您可以在项目中包含多个大小的“location.png”资源,然后根据缩放级别选择合适的资源,或使用Bitmap.scaleInto()方法动态缩放图形。 / p>

请注意,即时方法会产生比包含原始图形的多个尺寸更低质量的结果(好吧,我假设你有一个高分辨率原件,你正在缩小以包含在你的项目中)