我正在尝试在GoogleMap中建立从一个点到另一个点的路径,但我的多段线有时不会被我的Android项目显示(或绘制)。 当START-END距离非常高时,它会发生。 只是距离问题? 这是我的代码:
@Override
protected void onPostExecute(List<List<HashMap<String, String>>> result) {
ArrayList<LatLng> points;
// Traversing through all the routes
for (int i = 0; i < result.size(); i++) {
points = new ArrayList<>();
lineOptions = new PolylineOptions();
// Fetching i-th route
List<HashMap<String, String>> path = result.get(i);
// Fetching all the points in i-th route
for (int j = 0; j < path.size(); j++) {
HashMap<String, String> point = path.get(j);
double lat = Double.parseDouble(point.get("lat"));
double lng = Double.parseDouble(point.get("lng"));
LatLng position = new LatLng(lat, lng);
points.add(position);
}
// Adding all the points in the route to LineOptions
lineOptions.addAll(points);
lineOptions.width(10);
lineOptions.color(Color.BLUE);
Log.d("onPostExecute","onPostExecute lineoptions decoded");
}
// Drawing polyline in the Google Map for the i-th route
if(lineOptions != null) {
mMap.addPolyline(lineOptions);
}
else {
Log.d("onPostExecute","without Polylines drawn");
}
}
我哪里错了?
答案 0 :(得分:0)
看到的一个问题是&#34;遍历的每次迭代。&#34;循环创建一个新的lineOptions
。但是你最后只在循环之外使用lineOptions
。所以这意味着,如果result
有多个条目,那么您只会绘制一条路线 - 最后一条路线。
所以(a)在循环内部移动polyLine的绘制,或者(b)在循环之前仅创建lineOptions
一次。
此外,您也可以通过在循环之前移动它来消除每次迭代points
的创建,然后在列表上发出.clear()
。
所以下面的代码假定(a)你想为每条路线绘制polyLine(基于注释&#39;绘制折线......对于第i条路线&#39;):
@Override
protected void onPostExecute(List<List<HashMap<String, String>>> result) {
ArrayList<LatLng> points = new ArrayList<>();
// Traversing through all the routes
for (int i = 0; i < result.size(); i++) {
points.clear();
lineOptions = new PolylineOptions();
// Fetching i-th route
List<HashMap<String, String>> path = result.get(i);
// Fetching all the points in i-th route
for (int j = 0; j < path.size(); j++) {
HashMap<String, String> point = path.get(j);
double lat = Double.parseDouble(point.get("lat"));
double lng = Double.parseDouble(point.get("lng"));
LatLng position = new LatLng(lat, lng);
points.add(position);
}
// Adding all the points in the route to LineOptions
lineOptions.addAll(points);
lineOptions.width(10);
lineOptions.color(Color.BLUE);
Log.d("onPostExecute","onPostExecute lineoptions decoded");
// Drawing polyline in the Google Map for the i-th route
if(lineOptions != null) {
mMap.addPolyline(lineOptions);
}
else {
Log.d("onPostExecute","without Polylines drawn");
}
}
}