适用于Blackberry 6.0的Bing Maps SDK

时间:2012-04-02 13:16:42

标签: blackberry bing-maps

我需要在针对黑莓OS 6.0开发的应用中使用Bing地图。但找不到任何本机可用的框架或SDK。请帮我在黑莓上使用Bing或Google Maps SDK。请提供我可以从哪里获得SDK的参考资料。谢谢。

2 个答案:

答案 0 :(得分:3)

以下是使用 Google地图的示例,不知道如何使用Bing地图。

首先,通过在设备/模拟器的浏览器上点击此链接,从http://m.google.com/maps/在您的设备/模拟器上安装Google地图。 然后,您可以从应用程序中调用Google Maps应用程序。这是一个代码示例:

package mypackage;

import net.rim.blackberry.api.browser.URLEncodedPostData;
import net.rim.device.api.system.ApplicationDescriptor;
import net.rim.device.api.system.ApplicationManager;
import net.rim.device.api.system.ApplicationManagerException;
import net.rim.device.api.system.CodeModuleManager;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.BasicEditField;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;

/**
 * A class extending the MainScreen class, which provides default standard
 * behavior for BlackBerry GUI applications.
 */
public final class MyScreen extends MainScreen
{
    /**
     * Creates a new MyScreen object
     */
    public MyScreen()
    {        
        // Set the displayed title of the screen       
        setTitle("Google Maps");

        VerticalFieldManager mainManager = new VerticalFieldManager(USE_ALL_HEIGHT | USE_ALL_WIDTH);

        final BasicEditField latitudeInputField = new BasicEditField("Latitude:" , "23.717782");
        final BasicEditField longitudeInputField = new BasicEditField("Longitude:" , "90.407124");
        final BasicEditField titleInputField = new BasicEditField("Title:" , "Dhaka, Bangladesh");
        final BasicEditField descriptionInputField = new BasicEditField("Description:" , "Capital City of Bangladesh");

        ButtonField btn_ShowMap = new ButtonField("Show On Map");
        btn_ShowMap.setChangeListener(new FieldChangeListener() {

            public void fieldChanged(Field field, int context) {
                double lat = Double.parseDouble( latitudeInputField.getText() );
                double lon = Double.parseDouble( longitudeInputField.getText() );
                String title = titleInputField.getText();
                String description = descriptionInputField.getText();
                showGoogleMap(lat, lon, title, description);
            }
        });

        mainManager.add(latitudeInputField);
        mainManager.add(longitudeInputField);
        mainManager.add(titleInputField);
        mainManager.add(descriptionInputField);
        mainManager.add(btn_ShowMap);

        add(mainManager);

    }

    /**
     * Starts the Google Maps application and the specified locatin is shown on map
     * @param latitude the latitude of the location to show
     * @param longitude the longitude of the location to show
     * @param title the title of the location to show
     * @param description the description of the location to show
     */
    public void showGoogleMap(double latitude, double longitude, String title,  String description) {
        try {
            int mh = CodeModuleManager.getModuleHandle("GoogleMaps");
            if (mh == 0) {
                 throw new ApplicationManagerException("GoogleMaps isn't installed");
            }
            URLEncodedPostData uepd = new URLEncodedPostData(null, false);
            uepd.append("action","LOCN");
            uepd.append("a", "@latlon:"+latitude+","+longitude);
            uepd.append("title", title);
            uepd.append("description", description);
            String[] args = { "http://gmm/x?"+uepd.toString() };
            ApplicationDescriptor ad = CodeModuleManager.getApplicationDescriptors(mh)[0];
            ApplicationDescriptor ad2 = new ApplicationDescriptor(ad, args);
            ApplicationManager.getApplicationManager().runApplication(ad2, true);
        } catch(final Exception excp) {
            Dialog.alert("Sorry, can't start Google Map: " + excp.getMessage());
        }
    }
}

以下是它的外观:

Home Screen Google Maps

我只在模拟器9800(OS 6)上测试过

I GOT THE IDEA FROM HERE

答案 1 :(得分:3)

检查Nutiteq RIM BlackBerry Mapping SDK

您可以从Bing Maps,Yahoo!获取地图内容。地图,OpenStreetMap等等。通过Nutiteq BlackBerry mapping SDK tutorial开始编码。