gpt4 book ai didi

java - 错误 : java. lang.IllegalStateException: 没有包含点

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:24:09 24 4
gpt4 key购买 nike

我在尝试在 map 上搜索地点时遇到此错误。我在搜索时尝试了其他分辨率,但没有成功。

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;
}

图片:

enter image description here

最佳答案

您当前的代码仅使用列表中的最后一条路线,但更常见的是使用列表中的第一条路线,而不是其中一条备用路线。

为了获得解码后的折线列表,您只需查看 routes 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 - 错误 : java. lang.IllegalStateException: 没有包含点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47102127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com