4

BBMap で特定の場所を表示するために独自のロゴを使用する方法を知りたいですか? 誰でもこれを行う方法を知っていますか?

4

1 に答える 1

6

ブラックベリーの地図

Blackberry Map では、POI のカスタム アイコンを表示できません。
Blackberry Map の Location に含めることができるもの:

  • 場所の緯度 * 100,000。南はマイナス。
  • 場所の経度 * 100,000。西はマイナス。
  • 場所の横に表示されるラベル。
  • BlackBerry スマートフォン ユーザーが
    詳細を選択したときに表示される説明。
  • 0 から MAX_ZOOM までのズーム レベル。
  • 住所
  • 州または州
  • 郵便番号
  • 電話
  • ファックス
  • URL
  • 電子メールアドレス
  • カテゴリー
  • 0 ~ 5 の評価情報

詳細を見る- BlackBerry Maps Location Document Format

方法 - BlackBerry Maps を呼び出すも参照してください。

MapField の使用

別の方法として、 MapField + manager/screen paint overrideを試すことができます。

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

Blackberry GPS および BlackBerry Maps Development Guide
の MapComponent の使用も参照してください。

GPS データの準備

実際のデバイスの場合は、GPS が利用可能であり、オンになっていることを確認してください。
シミュレーターの場合は、プログラムを開始する前に、シミュレーター メニュー -> シミュレート -> GPS 位置情報を使用して GPS データを設定します。
他のオプションは、独自の Coordinats をハードコーディングし、GPS なしで使用することです。

    double latitude = 51.507778;
    double longitude = -0.128056;
    Coordinates mCoordinates = new  Coordinates(latitude, longitude, 0);
于 2009-10-07T06:50:20.637 に答える