问题
I need to use Bing maps in an app being developed targetting blackberry OS 6.0. But could not find any natively available framework or SDK. Please help me on using either Bing or Google Maps SDK on blackberry. Please provide the references from where I can get the SDK. Thank you.
回答1:
Here is an example of using Google Maps, don't know how to use Bing maps.
First, install Google Maps on your device/simulator from http://m.google.com/maps/ by hitting this link on the browser of the device/simulator.
Then you can invoke the Google Maps application from your application. Here is a code sample:
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());
}
}
}
Here is how it should look like:
I've tested only on simulator 9800 (OS 6)
I GOT THE IDEA FROM HERE
回答2:
Check Nutiteq RIM BlackBerry Mapping SDK.
You can get map content from Bing Maps, Yahoo! Maps, OpenStreetMap and many more. Go through Nutiteq BlackBerry mapping SDK tutorial to get started with coding.
来源:https://stackoverflow.com/questions/9977201/bing-maps-sdk-for-blackberry-6-0