Как показать нашу собственную иконку в BlackBerry Map? - PullRequest
4 голосов
/ 06 октября 2009

Я хочу знать, как использовать наш собственный логотип, чтобы показать конкретное место в BBMap? Может кто-нибудь знает как это сделать?

1 Ответ

6 голосов
/ 07 октября 2009

Карта BlackBerry

На карте Blackberry невозможно отобразить пользовательский значок для POI.
Вещи, которые вы можете включить в Расположение на карте Blackberry:

  • Широта местоположения * 100 000. Юг отрицательный.
  • Долгота местоположения * 100 000. Запад отрицателен.
  • Метка для отображения рядом с локацией.
  • Описание, отображаемое, когда пользователь смартфона BlackBerry выбирает
    подробности.
  • Уровень масштабирования от 0 до MAX_ZOOM.
  • Адрес
  • Город
  • Провинция или штат
  • Страна
  • Почтовый индекс
  • Телефон
  • Факс
  • URL
  • Адрес электронной почты
  • Категория
  • Информация о рейтинге от 0 до 5

См. Что такое - формат документа местоположения карт BlackBerry

Также см. Как - вызвать BlackBerry Maps

Использование MapField

В качестве альтернативы вы можете попробовать MapField + менеджер / переопределение краски экрана.

Пользовательское расширение для MapField:

class CustomMapField extends MapField {
    Bitmap mIcon;
    XYRect mDest;

    public void moveTo(Coordinates coordinates) {
        super.moveTo(coordinates);
        mDest = null;
    }

    protected void paint(Graphics graphics) {
        super.paint(graphics);
        if (null != mIcon) {
            if (null == mDest) {
                XYPoint fieldOut = new XYPoint();
                convertWorldToField(getCoordinates(), fieldOut);
                int imgW = mIcon.getWidth();
                int imgH = mIcon.getHeight();
                mDest = new XYRect(fieldOut.x - imgW / 2, 
                fieldOut.y - imgH, imgW, imgH);
            }
            graphics.drawBitmap(mDest, mIcon, 0, 0);
        }
    }
}

Пример использования:

class Scr extends MainScreen {
    CustomMapField mMapField;
    Coordinates mCoordinates;
    public Scr() {
        LocationProvider provider = null;
        Location location = null;
        try {
            provider = LocationProvider.getInstance(null);
        } catch (LocationException e) {
            e.printStackTrace();
        }
        try {
            location = provider.getLocation(-1);
        } catch (LocationException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        mCoordinates = location.getQualifiedCoordinates();
        add(new LabelField("Latitude: "
                + String.valueOf(Coordinates.convert(
                mCoordinates.getLatitude(),
                Coordinates.DD_MM_SS))));
        add(new LabelField("Longitude: "
                + String.valueOf(Coordinates.convert(
                mCoordinates.getLongitude(), 
                Coordinates.DD_MM_SS))));
        mMapField = new CustomMapField();
        mMapField.mIcon = Bitmap.getBitmapResource("poi_icon.png");
        mMapField.moveTo(mCoordinates);
        add(mMapField);
    }
}

Смотри также
Использование MapComponent в Blackberry
Руководство по разработке карт GPS и BlackBerry

Подготовка данных GPS

Если это реальное устройство, убедитесь, что GPS доступен и включен.
Если это симулятор, то перед запуском программы используйте меню симулятора -> Симуляция -> Местоположение GPS, чтобы установить данные GPS.
Другой вариант - жестко указать свои собственные координаты и использовать их без GPS:

    double latitude = 51.507778;
    double longitude = -0.128056;
    Coordinates mCoordinates = new  Coordinates(latitude, longitude, 0);
...