PolyUtil.decode抛出StringIndexOutOfBoundsException

时间:2019-04-08 23:06:45

标签: android google-maps google-polyline polylineoptions

使用Google Maps 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);

但是到目前为止,仅针对特定的编码字符串会引发此错误。当我解码另一个长度相同或字符长度相同或长度较短的编码字符串时,不会引发错误。我什至使用Google的Interactive Polyline Decoder Tool测试了给出错误的字符串,并且该字符串正确显示。引发此错误的任何原因会发生吗?

1 个答案:

答案 0 :(得分:2)

问题是双反斜杠“ \\”。在解码之前,只需用一个反斜杠“ \”替换它们即可。
如下:

String newEncodedString = encodedString.replace("\\\\","\\");
PolyUtil.decode(newEncodedString);