2012-04-02 98 views
3

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

回答

3

这是一个使用Google地图的例子,不知道如何使用Bing地图。

首先,通过在设备/模拟器的浏览器上点击此链接,将谷歌地图安装到您的设备/模拟器上,出现http://m.google.com/maps/
然后,您可以从您的应用程序调用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

+0

@HeartBeat ..我不认为使用这是一个很好的选择,因为这调用了另一个应用程序和依赖。如果地图被删除,那么你的应用程序将无法工作。 - – 2012-04-20 06:31:29