黑莓和基于地图的应用程序,如Yelp和Google Map

时间:2009-10-23 19:46:00

标签: google-maps blackberry gps gis

这是一篇刚刚开始使用BB开发的人的帖子。任何指导都非常感谢。

如何实施基于地图的BlackBerry应用程序,例如Yelp和Google Map?与基于Web的版本一样。用于BB的Yelp允许您搜索餐馆和餐馆。等等基于当前或指定的位置。搜索结果以列表或地图视图的形式显示搜索结果的标记。 Yelp的地图由Bing提供支持。如何在BB代码中调用地图以及标记?对于列表视图,用于从数据库中检索结果列表的内容。可以使用任何数据库吗?

BB的Google Map 3.2现在支持图层。再次,如何调用Google地图?您还可以直接在地图上选择特定位置的标记(即Wiki,加油站)并查看该位置的信息(即Wiki,加油站地址)。这是怎么做到的?

我对地图技术以及BB开发的了解非常有限,因此欢迎基本或深入的反馈。

1 个答案:

答案 0 :(得分:8)

我没有为黑莓编写真实世界gps应用程序的经验,下面只是我对可能的解决方法的观察和想法。

黑莓Yelp申请

事实上,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。