android在google map上画线比较容易实现的,但是现在问题在于如何获取起点和终点之间的路线图。这里我们使用Google Directions API来实现, Google Directions API是一种使用 HTTP 请求计算多个位置间路线的服务。路线可以以文本字符串或纬度/经度坐标的形式指定起点、目的地和路标。Google Directions API 可以使用一系列路标传回多段路线。

Google Directions API 请求是以下形式的 HTTP 网址:http://maps.google.com/maps/api/directions/output?parameters

其中,output 可能是以下任何一个值:

l  json(建议)表示以 JavaScript 对象表示法 (JSON) 的形式输出

l  xml 表示以 XML 的形式输出

具体参数参见http://code.google.com/intl/zh-CN/apis/maps/documentation/directions/

通过http请求获取线路,接下来我们需要对返回结果进行解析,提取出导航线路的一系列路标。

如果我们只是简单的画图路线路,返回结果中的字段overview_path包含可我们所需要的数据。它包含一个对象,该对象包含一组表示生成路线的近似(平滑)路径的已编码 points 和 levels。编码算法参见http://code.google.com/intl/zh-CN/apis/maps/documentation/utilities/polylinealgorithm.html说明。

我们只需要提取points字段中的字符串进行解码就可以得到我们所需的一系列点了,将这些点按顺序连接起来就是我们所要的路线图了。

/*** 通过解析google map返回的xml,在map中画路线图*/public void drawRoute(){String url = "http://maps.google.com/maps/api/directions/xml?origin=23.055291,113.391802" +"&destination=23.046604,113.397510&sensor=false&mode=walking";HttpGet get = new HttpGet(url);String strResult = "";try {HttpParams httpParameters = new BasicHttpParams();HttpConnectionParams.setConnectionTimeout(httpParameters, 3000);HttpClient httpClient = new DefaultHttpClient(httpParameters); HttpResponse httpResponse = null;httpResponse = httpClient.execute(get);if (httpResponse.getStatusLine().getStatusCode() == 200){strResult = EntityUtils.toString(httpResponse.getEntity());}} catch (Exception e) {return;}if (-1 == strResult.indexOf("<status>OK</status>")){Toast.makeText(this, "获取导航路线失败!", Toast.LENGTH_SHORT).show();this.finish();return;}int pos = strResult.indexOf("<overview_polyline>");pos = strResult.indexOf("<points>", pos + 1);int pos2 = strResult.indexOf("</points>", pos);strResult = strResult.substring(pos + 8, pos2);List<GeoPoint> points = decodePoly(strResult);MyOverLay mOverlay = new MyOverLay(points);List<Overlay> overlays = mMapView.getOverlays();overlays.add(mOverlay);if (points.size() >= 2){mMapController.animateTo(points.get(0));}mMapView.invalidate();}/*** 解析返回xml中overview_polyline的路线编码* * @param encoded* @return*/private List<GeoPoint> decodePoly(String encoded) {List<GeoPoint> poly = new ArrayList<GeoPoint>();int index = 0, len = encoded.length();int lat = 0, lng = 0;while (index < len) {int b, shift = 0, result = 0;do {b = encoded.charAt(index++) - 63;result |= (b & 0x1f) << shift;shift += 5;} while (b >= 0x20);int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));lat += dlat;shift = 0;result = 0;do {b = encoded.charAt(index++) - 63;result |= (b & 0x1f) << shift;shift += 5;} while (b >= 0x20);int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));lng += dlng;GeoPoint p = new GeoPoint((int) (((double) lat / 1E5) * 1E6),(int) (((double) lng / 1E5) * 1E6));poly.add(p);}return poly;}

转自:http://blog.csdn.net/ccgang/archive/2011/04/17/6328671.aspx

android在google map上画出导航路线图相关推荐

  1. Android使用Google Map服务 - 根据GPS信息在地图上定位

    Android使用Google Map服务 - 根据GPS信息在地图上定位 自暑假7月7日开始,到今天的8月7日,整个一个月,我总算是学到了Google Map这部分的内容.原本挺兴奋的,却被注册ap ...

  2. cufon,在网页上画出特殊字体

    为什么80%的码农都做不了架构师?>>>    设计师们有时会使用特殊字体让网页更好看,但浏览器通常只支持Arial.Helvetica等通用字体.那么通常的解决办法就是将特殊字体做 ...

  3. 在google map上显示Instagram的照片

    之前Instagram有一个在地图上显示照片的功能,可惜后来这个功能去掉了.INS的官方说法是因为这个功能的使用率很低,因此最后舍弃了这个功能.其实我觉得这个功能还蛮好的,看到自己的照片遍布全世界很有 ...

  4. 编写一个APPlet,再随机的位置上画出几个随机大小的矩形。

    编写一个APPlet,再随机的位置上画出几个随机大小的矩形.如果一个矩形的宽度小于高度,则矩形填充成亮紫色:如果矩形的宽度大于高度,则矩形填充为浅黄色:如果矩形的宽度和高度相等,则只用红色线画出矩形的 ...

  5. 怎样固定计算机画图曲线,如何在电脑上画出固定长度的线段

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:如何在电脑上画出固定长度的线段回答:这个要看你采用什么软件来画线段了 既然你是用word的话,稍微有点烦:方法为:在word里搞出绘 ...

  6. 使用JavaScript在Canvas上画出一片星空

    随着Html5的迅猛发展,画布也变得越来越重要.下面我就写一个关于在canvas上画出一片星空的简单的代码的示例. 理论基础 初始化一个canvas,获得一个用于绘制图形的上下文环境context.并 ...

  7. html中矩形坐标,js怎么根据坐标在图片上画出矩形框?

    如图本地上传的图片,并点击获取到这个图片里每个地方的坐标,根据4个角坐标在图片上画出矩形框,该怎么画?大神支招. 我图片是显示在div里的,是不是应该用canvas显示图片? 代码: Document ...

  8. 用python的opencv库在图片上画出蓝底黑字的文本框

    以下是使用Python的OpenCV库实现在图片上绘制的示例代码: import cv2# 读入图片 img = cv2.imread('example.jpg')# 在图片上绘制红色矩形框 cv2. ...

  9. python:基于matplotlib在坐标轴上画出车辆路径规划示意图(箭头、中文图例)

    车辆路径规划问题的研究一般较常遇到需要画出车辆路径示意图,已知有每辆车的真实坐标序列,那么如何利用在一个空白的坐标轴上画出路径呢? 1.准备 1.1 matplotlib引入 一般情况下只引入plt就 ...

最新文章

  1. vue-router使用next()跳转到指定路径时会无限循环
  2. C/C++返回内部静态成员的陷阱
  3. mRemoteNG 远程连接工具(开源)
  4. 文档的管理计算机,如何使用FTP自动同步备份电脑文件数据?
  5. SpringCloud:Ribbon负载均衡(基本使用、 负载均衡、自定义配置、禁用 Eureka 实现 Ribbon 调用)
  6. MySQL基础 - 注意事项
  7. 【Java】Java8 LocalDate日期时间用法总结
  8. MATLAB2016a+eeglab安装
  9. HD2500显卡驱动linux,英特尔HD Graphics 4000/2500 集成显卡驱动
  10. mfc word转pdf
  11. elementUI中table的表头设置提示tooltips
  12. 基于百度paddle的快递面单三段码识别
  13. 2020-09-15,小米笔试,java
  14. 独家揭秘:小程序销售额破千万,他们怎么做到的
  15. 选择计算机部件的原则是什么,选择工业机器人视觉系统必须遵守的基本原则
  16. Ubuntu 怎么重启网络
  17. roll() java_java.util.Calendar.roll(int field,int amount)方法实例
  18. 杨澜写给女儿的十四条人生忠告
  19. wfp(微软)对付flash
  20. 仙剑奇侠传4狐仙打法

热门文章

  1. 【mybatis原理工作原理】
  2. 70道关于JavaScript的常见面试题解答
  3. 基础知识补充——白噪声、高斯白噪声
  4. mats显存测试软件linux环境,显存检测软件Mats
  5. koa2使用ioredis存储session
  6. Nginx性能调优,解决C10K问题
  7. 【Java锁体系】ReadWriteLock读写锁是什么?什么是读写锁
  8. oracle显示人民币,如何在ORACLE中实现人民币大写的转换
  9. Java-Collection集合和Map集合总结
  10. python识图找图_Python实现识别图片中的所有人脸并显示出来