请求返回的数据样式,由于我的Android studio展示的Log日志过短,无法显示完全结果,所以我将完全结果图片展示出来,方便大家查看结果

首先展示的是偏移的路线,话不多说直接上代码



当使用这个方法的时候遇到跨江的桥的时候,会偏离桥直接跨江过去。这里需要改正的是解析结果,不解析steps而解析overview_polyline对象中有一个points是路线的集合,这里只是猜测有可能是数据太多所以才以这种方式返回的,这个只是猜想。
修改之后的代码:

/****
* 路线经纬度
* @param start
* @param end
* @param httpCallBack
*/

public static void distanceMatrix(final boolean isShow, final LatLng start, LatLng end, final HttpCallBack httpCallBack) {/*请求地址*/String url = "https://maps.googleapis.com/maps/api/directions/json?";/*相关参数*/String params = "origin=" + start.latitude + "," + start.longitude +"&destination=" + end.latitude + "," + end.longitude + "&mode=driving&sensor=false"+ "&language=zh-CN&key=" + Constant.GOOGLE_MAP;Request request = new Request.Builder().url(url + params).get().build();if (isShow)Http.getInstance().show();httpClient.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {if (isShow)Http.getInstance().dismiss();}@Overridepublic void onResponse(Call call, Response response) throws IOException {if (response.isSuccessful()) {String result = response.body().string();Log.e("qza", result);try {JSONObject object = new JSONObject(result);RouteEntity routeEntity = new RouteEntity();JSONArray routes = object.optJSONArray("routes");if (routes.length() == 0) {return;}JSONObject data = routes.optJSONObject(0);JSONArray legs = data.optJSONArray("legs");routeEntity.distance = legs.optJSONObject(0).optJSONObject("distance").optString("text");routeEntity.duration = legs.optJSONObject(0).optJSONObject("duration").optString("text");JSONObject polyline = data.optJSONObject("overview_polyline");String points = polyline.optString("points");routeEntity.lngList.addAll(decodePoly(points))  ;if (httpCallBack != null)httpCallBack.onSuccess(routeEntity);} catch (JSONException e) {e.printStackTrace();}} else {if (httpCallBack != null)onFail(response.code(), httpCallBack);}}});}

/**
* 解析返回xml中overview_polyline的路线编码
*
* @param encoded
* @return List
*/

  private static List<LatLng> decodePoly(String encoded) {List<LatLng> poly = new ArrayList<LatLng>();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;LatLng p = new LatLng((((double) lat / 1E5)),(((double) lng / 1E5)));poly.add(p);}return poly;
}

希望可以帮助到你,这里只是作为遇到问题的记载。

关于Google地图路线偏移的问题相关推荐

  1. google地图经纬度偏移修正算法完美解决方案

    google地图经纬度偏移修正算法完美解决方案 参考文章: (1)google地图经纬度偏移修正算法完美解决方案 (2)https://www.cnblogs.com/moonvan/archive/ ...

  2. 通过Android上的意图启动Google地图路线

    本文翻译自:Launching Google Maps Directions via an intent on Android My app needs to show Google Maps dir ...

  3. Google地图定位偏移矫正

    Google地图定位标记矫正 技术交流QQ:1148824289 问题概述 google地图在中国使用,都存在偏移问题,车辆明明在公路上的,点一打到地图上,可能跑到人家房顶上了,或者跑到河里去了,关于 ...

  4. 高德,百度,Google地图定位偏移以及坐标系转换

    本文引用地址 一.地图坐标系解释 在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Go ...

  5. Android 开发笔记 Google地图定位与路线显示

    当你的应用需要加入Google地图,并且需要根据两点坐标规划路线时,就需要在应用中加入Google地图,调用指定的api获取路线数据,再把数据显示出来. 1.加载google地图,实例化一个地图视图对 ...

  6. IOS中GPS定位偏移纠正(适用于Google地图)

    在这个神奇的国度里,我们总得学习一些有中国特色的东东,例如"火星坐标".也许有人还不知道这是什么玩意,我就简要介绍一下吧.      如果你有带GPS模块的智能手机,打开定位功能, ...

  7. 中国区GPS偏移纠正(适用于Google地图)

    在做iOS开发时,用到一个获取当前位置周边商家的功能.当时每次我在获取从iPhone里GPS返回过来的数据到Google Place API上获取时总是发现,获取的商家并不是最近的,而是几百米以外的. ...

  8. 谷歌地图位置偏移_如何使用Google地图与他人临时分享您的位置

    谷歌地图位置偏移 You're meeting a friend downtown in a new city, and he asks you where you are. Be honest: y ...

  9. 在google地图上显示路线

    现在很多手机上的软件都支持将跑步的路线直接显示在手机地图上,这里所说的方法只是用于研究学习. 要实现在google地图上显示路线,首先你要有坐标值,这里假设使用手机的GPS记录位置信息.一般手机都会产 ...

最新文章

  1. “几何深度学习”受爱因斯坦启示:让AI摆脱平面看到更高的维度
  2. vs2010下release版本调试设置
  3. 数字图像处理:第三章 灰度直方图
  4. boost::python::import相关的测试程序
  5. linux prc 时区,授时时区问题解决
  6. 球迷 如何在Linux纯命令行玩转谷歌浏览器,边看欧洲杯,边看足球宝贝
  7. 超级计算机燕 排名,特斯拉超级计算机算力全球第五,展现无人驾驶领域野心...
  8. 通达OA智能开发平台CRM系统 实现数据的自动计算
  9. 微博无限私信技术软件_用手机制作剪辑视频的教程,手机视频剪辑软件还有哪些?...
  10. jinja2中的过滤器
  11. java order()_Java Comparator naturalOrder()用法及代码示例
  12. ue4创建c++类编译失败
  13. 【File类、递归】
  14. 【计算机网络】实验报告一:验证性实验
  15. 深度学习之前馈神经网络(前向传播和误差反向传播)
  16. 使用WebBrowser控件实现打印 去掉 页眉和页脚
  17. python网络安全工具箱界面,Python开发案例:设计启动工具箱,显示图形界面的方式...
  18. [转]AVPlayer的基本使用
  19. 阅读使人进步《我的书单》
  20. 若不是终点 请一直微笑向前

热门文章

  1. 最全的PHP正则表达式
  2. 视觉工程师面试50问
  3. 安装bugzilla
  4. shell脚本之AWK-AWK的变量和AWK运算符
  5. 什么是Base-64编码
  6. python验证身份证最后一位数字代表什么_身份证号最后一位是“X”,代表什么意思?...
  7. 安装APK 免输入vivo、oppo密码
  8. C#中的ToolStrip控件的使用
  9. react(let命令)
  10. SQL之对EXISTS谓词的理解