настроить маркер местоположения на увеличение и уменьшение масштаба в Mapfield - PullRequest
1 голос
/ 01 августа 2011

H Я написал код для рисования двух пользовательских маркеров местоположения на 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 Ответ

1 голос
/ 02 августа 2011

Масштабирование влияет только на саму карту. Если вы хотите изменить размер вашей собственной графики, вам нужно будет вручную масштабировать их самостоятельно. Например, вы можете либо включить в свой проект ресурс «location.png» нескольких размеров, а затем выбрать подходящий в зависимости от уровня масштабирования, либо использовать метод Bitmap.scaleInto() для увеличения графика. муха.

Обратите внимание, что метод "на лету" даст более низкое качество результата, чем включение оригиналов в нескольких размерах (я предполагаю, что у вас есть оригинал с высоким разрешением, который вы уменьшаете для включения в проект). .

...