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

发布于 2024-08-06 13:58:05 字数 46 浏览 5 评论 0原文

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

I want to know how to use our own logo to show the particular place in BBMap? Can anyone knows how to do this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

辞取 2024-08-13 13:58:05

黑莓地图

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

  • 位置的纬度 * 100,000。南为负。
  • 位置的经度 * 100,000。西为负。
  • 要显示在位置旁边的标签。
  • BlackBerry 智能手机用户选择时显示的说明
    细节。
  • 缩放级别从 0 到 MAX_ZOOM。
  • 地址
  • 城市
  • 省或州
  • 国家
  • 邮政编码
  • 电话
  • 传真
  • URL
  • 电子邮件地址
  • 类别
  • 0 到 5 之间的评级信息

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

另请参阅 如何调用 BlackBerry 地图

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

另请参阅
在 Blackberry 中使用 MapComponent
GPS 和 BlackBerry 地图开发指南< /a>

准备 GPS 数据

如果是真机,请确保 GPS 可用并已打开。
如果是模拟器,则在启动程序之前使用模拟器菜单 ->模拟-> GPS 位置设置 GPS 数据。
另一种选择是硬编码您自己的坐标并在没有 GPS 的情况下使用它们:

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

BlackBerry Map

It's not possible in Blackberry Map to show custom icon for POI.
Things you can include in Location on Blackberry Map:

  • The latitude of the location * 100,000. South is negative.
  • The longitude of the location * 100,000. West is negative.
  • The label to be displayed beside the location.
  • The description displayed when the BlackBerry smartphone user selects
    details.
  • Zoom level from 0 to MAX_ZOOM.
  • Address
  • City
  • Province or state
  • Country
  • Postal code
  • Phone
  • Fax
  • URL
  • Email address
  • Category
  • Rating information between 0 and 5

See What Is - BlackBerry Maps Location Document Format

Also see How To - Invoke BlackBerry Maps

Using MapField

As an alternative you can try MapField + manager/screen paint override.

Custom extension for 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);
        }
    }
}

Example of use:

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

See also
Using MapComponent in Blackberry
GPS and BlackBerry Maps Development Guide

Prepare GPS data

If it's real device, be sure GPS is available and turned on.
If it's simulator, then before you start program use simulator menu -> simulate -> GPS Location to set GPS data.
Other option is hardcode your own Coordinats and use them without GPS:

    double latitude = 51.507778;
    double longitude = -0.128056;
    Coordinates mCoordinates = new  Coordinates(latitude, longitude, 0);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文