У меня есть приложение, которое анализирует ответ json после получения 2 почтовых индексов в URL-запросе к Google Maps.Я получил узел Overviewpolyline из ответа и привел его к строке.Я предполагаю, что узел Overviewpolyline - это весь маршрут в виде ломаной линии.
Ниже приведен код, который, как я обнаружил, при передаче полилинии в виде строки преобразует эту строку в список GeoPoints.Я проверил, не является ли строка ломаной строки пустой, и, скажем, для двух почтовых индексов в строке было более 700 символов.так что никаких проблем нет.
Я отметил, где исключение происходит в коде источника ниже.Любые идеи, почему есть ошибка индекса.зацикливание контролируется оператором while и повторяется только тогда, когда длина полилинии меньше.
@SuppressWarnings("unchecked")
private List decodePolyLine(final String poly) {
int len = poly.length();
Log.e(TAG, "poly string length = "+poly.length());
int index = 0;
List decoded = new ArrayList();
int lat = 0;
int lng = 0;
while (index < len) {
int b;
int shift = 0;
int result = 0;
do {
b = poly.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 = poly.charAt(index++) - 63; <--------****error here****
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lng += dlng;
decoded.add(new GeoPoint(
(int)(lat*1e6) , (int)(lon * 1e6)));
}
return decoded;
}//end of decodePolyLine