这是一篇刚刚开始使用BB开发的人的帖子。任何指导都非常感谢。
如何实施基于地图的BlackBerry应用程序,例如Yelp和Google Map?与基于Web的版本一样。用于BB的Yelp允许您搜索餐馆和餐馆。等等基于当前或指定的位置。搜索结果以列表或地图视图的形式显示搜索结果的标记。 Yelp的地图由Bing提供支持。如何在BB代码中调用地图以及标记?对于列表视图,用于从数据库中检索结果列表的内容。可以使用任何数据库吗?
BB的Google Map 3.2现在支持图层。再次,如何调用Google地图?您还可以直接在地图上选择特定位置的标记(即Wiki,加油站)并查看该位置的信息(即Wiki,加油站地址)。这是怎么做到的?
我对地图技术以及BB开发的了解非常有限,因此欢迎基本或深入的反馈。
答案 0 :(得分:8)
我没有为黑莓编写真实世界gps应用程序的经验,下面只是我对可能的解决方法的观察和想法。
事实上,Blackberry Yelp应用程序显示地图,如果你搜索然后进入结果并看到地图地址
alt text http://img197.imageshack.us/img197/965/13428830.jpg alt text http://img269.imageshack.us/img269/1976/92068364.jpg
另见Yelp Launches Bing-Powered Blackberry App
如果您查看Yelp API,您会发现只有optionally use Google Maps可在您的网站上显示搜索结果位置的搜索功能。
Bing似乎是谷歌地图的MS模拟。并且有一个ASP Bing Map Control几乎不能用于BB开发。
alt text http://img193.imageshack.us/img193/9678/39917026.jpg
您可以从代码中调用installed Google Maps Mobile:
class Scr extends MainScreen {
public Scr() {
}
protected void makeMenu(Menu menu, int instance) {
super.makeMenu(menu, instance);
menu.add(mInvokeGMaps);
}
MenuItem mInvokeGMaps = new MenuItem("Run GMaps", 0, 0) {
public void run() {
GMLocation location
= new GMLocation(51.507778, -0.128056, "London");
invokeGMaps(location);
};
};
public void invokeGMaps(GMLocation l) {
int mh = CodeModuleManager.getModuleHandle("GoogleMaps");
if (mh == 0) {
try {
throw new ApplicationManagerException(
"GoogleMaps isn't installed");
} catch (ApplicationManagerException e) {
System.out.println(e.getMessage());
}
}
URLEncodedPostData uepd = new URLEncodedPostData(null, false);
uepd.append("action", "LOCN");
uepd.append("a", "@latlon:" + l.getLatitude()
+ "," + l.getLongitude());
uepd.append("title", l.getName());
uepd.append("description", l.getDescription());
String[] args = { "http://gmm/x?" + uepd.toString() };
ApplicationDescriptor ad = CodeModuleManager
.getApplicationDescriptors(mh)[0];
ApplicationDescriptor ad2 = new ApplicationDescriptor(ad, args);
try {
ApplicationManager.getApplicationManager()
.runApplication(ad2, true);
} catch (ApplicationManagerException e) {
System.out.println(e.getMessage());
}
}
}
使用自定义位置类:
class GMLocation {
String mName;
String mDescription;
double mLatitude;
double mLongitude;
public GMLocation(double lat, double lon) {
mLatitude = lat;
mLongitude = lon;
}
public GMLocation(double d, double e, String name) {
this(d, e);
mName = name;
}
public GMLocation(double lat, double lon, String name, String descr) {
this(lat, lon, name);
mDescription = descr;
}
public String getName() {
return mName;
}
public String getDescription() {
return mDescription;
}
public String getLongitude() {
return String.valueOf(mLongitude);
}
public String getLatitude() {
return String.valueOf(mLatitude);
}
}
另见How to use Google Map in Blackberry application?
Blackberry浏览器和BrowserField对JavaScript的支持有限。由于Bing和GMaps都基于JavaScript,我怀疑他们使用从服务器检索的静态图像来显示地图控件。这可能是可能的,但这意味着服务器端实现和所有必需的API开发人员密钥。
作为替代方案,您可以从Blackberry上的代码调用已安装的GMaps。