大佬教程收集整理的这篇文章主要介绍了android – Map查看绘制方向使用Google Directions API – 解码折线,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
任何帮助将不胜感激.
int[] decodedZoomLevels = PolylineDecoder.decodeZoomLevels(levels); GeoPoint[] gPts = PolylineDecoder.decodePoints(points,decodedZoomLevels.length);
点数和级别是您从JSON响应中提取的数据.然后,您可以浏览一系列地理点,在它们之间绘制一条线,以显示您的路线.
希望这可以帮助!肯尼
编辑:似乎google directions API不再返回缩放级别字符串作为JSON响应的一部分,不用担心,但是我们所使用的都是检查点数,所以我们可以简单地将它们放入列表如下:
public static List <GeoPoint> decodePoints(String encoded_points){ int index = 0; int lat = 0; int lng = 0; List <GeoPoint> out = new ArrayList<GeoPoint>(); try { int shift; int result; while (index < encoded_points.length()) { shift = 0; result = 0; while (true) { int b = encoded_points.charAt(index++) - '?'; result |= ((b & 31) << shift); shift += 5; if (b < 32) break; } lat += ((result & 1) != 0 ? ~(result >> 1) : result >> 1); shift = 0; result = 0; while (true) { int b = encoded_points.charAt(index++) - '?'; result |= ((b & 31) << shift); shift += 5; if (b < 32) break; } lng += ((result & 1) != 0 ? ~(result >> 1) : result >> 1); /* Add the new Lat/Lng to the Array. */ out.add(new GeoPoint((lat*10),(lng*10))); } return out; }catch(Exception E) { e.printStackTrace(); } return out; }
编辑:旧版
public class PolylineDecoder { /** * Transform a encoded PolyLine to a Array of GeoPoints. * Java implementation of the original Google JS code. * @see Original encoding part: <a href="http://code.google.com/apis/maps/documentation/polylinealgorithm.html">http://code.google.com/apis/maps/documentation/polylinealgorithm.html</a> * @return Array of all GeoPoints decoded from the PolyLine-String. * @param encoded_points String containing the encoded PolyLine. * @param countexpected number of points that are encoded in the PolyLine. Easiest way is to use the length of the ZoomLevels-String. * @throws DecodingException */ public static GeoPoint[] decodePoints(String encoded_points,int countExpected){ int index = 0; int lat = 0; int lng = 0; int cnt = 0; GeoPoint[] out = new GeoPoint[countexpected]; try { int shift; int result; while (index < encoded_points.length()) { shift = 0; result = 0; while (true) { int b = encoded_points.charAt(index++) - '?'; result |= ((b & 31) << shift); shift += 5; if (b < 32) break; } lat += ((result & 1) != 0 ? ~(result >> 1) : result >> 1); shift = 0; result = 0; while (true) { int b = encoded_points.charAt(index++) - '?'; result |= ((b & 31) << shift); shift += 5; if (b < 32) break; } lng += ((result & 1) != 0 ? ~(result >> 1) : result >> 1); /* Add the new Lat/Lng to the Array. */ out[cnt++] = new GeoPoint((lat*10),(lng*10)); } return out; }catch(Exception E) { e.printStackTrace(); } return out; } public static int[] decodeZoomLevels(String encodedZoomLevels){ int[] out = new int[encodedZoomLevels.length()]; int index = 0; for(char c : encodedZoomLevels.tocharArray()) out[index++] = c - '?'; return out; } }
以上是大佬教程为你收集整理的android – Map查看绘制方向使用Google Directions API – 解码折线全部内容,希望文章能够帮你解决android – Map查看绘制方向使用Google Directions API – 解码折线所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。