错误:java.lang.IllegalStateException:没有包含的点
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了错误:java.lang.IllegalStateException:没有包含的点,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2560字,纯文字阅读大概需要4分钟。
内容图文
![错误:java.lang.IllegalStateException:没有包含的点](/upload/InfoBanner/zyjiaocheng/728/3c6d55c30e584bc4b74140b114a19fbf.jpg)
尝试在地图上搜索地点时出现此错误.我在搜索时尝试了其他解决方案,但没有运气.
java.lang.IllegalStateException: no included points
在这一行:LatLngBounds.Builder builder = new LatLngBounds.Builder();
我正在使用的代码:
try {
JSONObject jsonObject = new JSONObject(response.body().toString());
JSONArray jsonArray = jsonObject.getJSONArray("routes");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject route = jsonArray.getJSONObject(i);
JSONObject poly = route.getJSONObject("overview_polyline");
String polyline = poly.getString("points");
polyLineList = decodePoly(polyline);
}
// Adjusting Bounds
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (LatLng latLng:polyLineList) {
builder = builder.include(latLng);
}
LatLngBounds bounds = builder.build();
CameraUpdate mCameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, 2);
mMap.animateCamera(mCameraUpdate);
private List decodePoly(String encoded) {
List poly = new ArrayList();
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;
}
任何帮助将不胜感激
解决方法:
您当前的代码只是使用列表中的最后一个路由,但更常见的是使用列表中的第一个路由,而不是其中一个备用路由.
为了获得解码的折线列表,您只需要查看路径JSONArray的第一个元素,如您在this working example中所见.
因此,删除for循环并从第一个元素获取overview_polyline:
JSONArray routeArray = jsonObject.getJSONArray("routes");
JSONObject routes = routeArray.getJSONObject(0);
JSONObject overviewPolylines = routes.getJSONObject("overview_polyline");
String encodedString = overviewPolylines.getString("points");
polyLineList = decodePoly(encodedString);
这应该照顾最常见的情况,您可以从请求中成功获取数据.
为了安全起见,无论何时处理LatLngBounds.Builder,都应确保拥有非空数据集.
这将确保您永远不会得到IllegalStateException:
if (!polyLineList.isEmpty()) {
// Adjusting Bounds
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (LatLng latLng:polyLineList) {
builder = builder.include(latLng);
}
LatLngBounds bounds = builder.build();
CameraUpdate mCameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, 2);
mMap.animateCamera(mCameraUpdate);
}
内容总结
以上是互联网集市为您收集整理的错误:java.lang.IllegalStateException:没有包含的点全部内容,希望文章能够帮你解决错误:java.lang.IllegalStateException:没有包含的点所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。