【发布时间】:2019-08-30 03:58:19
【问题描述】:
当使用谷歌地图 PolyUtil.decode 它给我这个错误java.lang.StringIndexOutOfBoundsException: length=60; index=60 at java.lang.String.charAt(Native Method) at com.google.maps.android.PolyUtil.decode(PolyUtil.java:464)
当我跟踪错误时,它给了我 PolyUtil.class 然后将我带到这一特定行
do{
b = encodedPath.charAt(index++) - 63 - 1;
result += b << shift;
shift += 5;
} while(b >= 31);
但到目前为止,此错误仅针对特定的编码字符串引发。当我解码另一个相同长度的字符或长度更长或更短的编码字符串时,它不会引发错误。我什至使用谷歌的交互式折线解码器工具测试了给出错误的字符串,它显示正确。发生此错误的任何原因?
【问题讨论】:
-
你有什么解决办法吗?
-
检查编码后的字符串是否有无效字符。在注意到缺少一些转义字符(例如
\\n)后,我想通了。在我的情况下,编码字符串中的\n引发了错误,但是当我将其更改为\\n时,它能够正确解码。 -
mc}r@ejvtMC\\\\XfAv@zDrAvGZ~ADVK?kBgJ{@iEi@kBQc@q@kAwAeCiAkBQEEAKEGIEM?KDOROR?LDBBN?pA?vBGv@Bp@FhBVxD
@GXIJa@@uA ~@wEvCSv@(这是我的编码字符串的示例)它由转义斜杠组成。当我删除反斜杠时,它显示“StringIndexOutOfBoundsException”并且绘制的路径很奇怪。不画过马路。并非在所有情况下都如此。 -
我建议您重新绘制线条以确保它正确,复制它然后将其重新粘贴回工具中以确保它是绘制的内容。然后将该编码字符串保存在某处,然后将其粘贴到 PolyUtil 解码中。也许在途中的某个地方发生了一些事情。如果新字符串仍然出现错误,请将其粘贴到此处,我会检查它。
标签: android google-maps google-polyline polylineoptions