如何在BlackBerry Map中显示我们自己的图标?

Kum*_*mar 4 maps gps blackberry jsr179

我想知道如何使用我们自己的徽标来显示BBMap中的特定位置?谁能知道怎么做?

Mak*_*tar 6

黑莓地图

在Blackberry Map中无法显示POI的自定义图标.
您可以在Blackberry地图上的位置中包含的内容:

  • 位置的纬度*100,000.南方是消极的.
  • 位置的经度*100,000.西方是消极的.
  • 要在该位置旁边显示的标签.
  • BlackBerry智能手机用户选择
    详细信息时显示的说明.
  • 缩放级别从0到MAX_ZOOM.
  • 地址
  • 省或州
  • 国家
  • 邮政编码
  • 电话
  • 传真
  • 网址
  • 电子邮件地址
  • 类别
  • 评级信息介于0和5之间

请参阅什么是 - BlackBerry Maps位置文档格式

另请参阅如何 - 调用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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用示例:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

另请参阅"
Blackberry GPS和BlackBerry Maps开发指南"中的" 使用MapComponent
"

准备GPS数据

如果是真实设备,请确保GPS可用并打开.
如果是模拟器,那么在启动程序之前使用模拟器菜单 - >模拟 - > GPS位置来设置GPS数据.
其他选项是硬编码您自己的Coordinats并在没有GPS的情况下使用它们:

    double latitude = 51.507778;
    double longitude = -0.128056;
    Coordinates mCoordinates = new  Coordinates(latitude, longitude, 0);
Run Code Online (Sandbox Code Playgroud)