首页 > Android, 嵌入式开发 > Android中在地图上显示两点间路径的方法

Android中在地图上显示两点间路径的方法

在Android 0.9 以及之前的SDK中,一直有一个com.google.googlenav的package,可以用来实现很多和Google地图相关的复杂功能,比如我今天要讲的显式两点间路径等。但是从1.0的SDK开始这个package被移除了,这使得很多早期的Android程序无法编译和运行,相关的功能也就没法实现了——Google一早就承诺会把Android开源,在开源的前夕移除一些比较高级的API也是可以理解的,何况他提供了很棒的Intent机制让我们调用内置的Google Maps。

我在Compare Everywhere的作者Jeffrey Sharkey的blog上看到了相关的一篇文章,学到了一个方法。
首先我们需要知道一点,即在PC浏览器中输入类似

http://maps.google.com/maps?f=d&saddr=shanghai&daddr=hangzhou&hl=en

这样的URL就可以在浏览器中得到一个从上海到杭州的路径,其中,saddr表示起点位置,daddr则表示目的地位置,当然也可以使用如X,Y的经纬度来表示。

知道了这一点以后,我们就可以利用Intent新建一个Activity来帮助我们。Android会自动找到并启动合适的应用程序,如果有多个可以打开这个URL的应用程序,它就会让用户选择。我写了一个很简单的Sample,主要的几句代码如下:

String uri = "http://maps.google.com/maps?f=d&saddr=" + strFrom
					+ ",&daddr=" + strTo + "&hl=en";
Log.i("RouteSample", "uri=" + uri);

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(uri)));

在用户输入完起点和目的地,并确认以后,Android弹出对话框让用户选择合适的应用程序。

我们选择Maps以后,上海到杭州的路径就显式在地图上了。

在这个例子中,我们利用了Android的Intent来启动了一个新的Activity,并显式了我们所需要的两点间的路径。由于我们是利用了Google Maps的功能,所以功能上没有多少东西可以定制。当然我觉得这个例子最主要的一点是展示了Android的Intent的灵活用法(官方的Intents List中被没有提及这个用法)。完整的源代码点击这里下载

分享&收藏:
  • del.icio.us
  • Digg
  • Google Bookmarks
  • Twitter
  • Technorati
  • Facebook
  • LinkedIn
  • 百度收藏
  • 豆瓣
  • 鲜果
  • QQ书签
  • 校内
  • 饭否
  1. 2009年4月6日20:57 | #1

    OK。你的链接已经做好。。

  2. 2009年4月6日23:12 | #2

    @不二
    你的链接也加上了,以后常来

  3. nakarai
    2009年4月10日14:14 | #3

    一直相信SDK1.0里存在着关于两点路径的api,今天看到你的文章,死心了。

  4. 2009年4月10日22:12 | #4

    @nakarai
    确实是很好用的一组API,可惜了
    完全自己写的难度还是不小的

  5. 于小风
    2009年5月23日07:39 | #5

    我在程序中也引用了两点路径这个intent,如果要用到里边POI搜索intent,不知uri是什么,还请指教。嘿嘿

  6. 2009年5月24日10:24 | #6

    @于小风
    你好,在Android doc –> Dev Guide –> Intents List: Google Apps中列出了目前公开的Intents,看起来还没有搜索兴趣点这样的Intent

  1. 本文目前尚无任何 trackbacks 和 pingbacks.