如何在谷歌地图中为多个经纬度坐标绘制折线。我需要为至少 20 组经纬度动态绘制折线。
问问题
14583 次
4 回答
7
使用折线和数组列表在地图中添加多个点
ArrayList<LatLng> coordList = new ArrayList<LatLng>();
// Adding points to ArrayList
coordList.add(new LatLng(0, 0);
coordList.add(new LatLng(1, 1);
coordList.add(new LatLng(2, 2);
// etc...
// Find map fragment. This line work only with support library
GoogleMap gMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
PolylineOptions polylineOptions = new PolylineOptions();
// Create polyline options with existing LatLng ArrayList
polylineOptions.addAll(coordList);
polylineOptions
.width(5)
.color(Color.RED);
// Adding multiple points in map using polyline and arraylist
gMap.addPolyline(polylineOptions);
于 2014-09-22T16:11:36.687 回答
5
Android 文档中的示例:
GoogleMap map;
// ... get a map.
// Add a thin red line from London to New York.
Polyline line = map.addPolyline(new PolylineOptions()
.add(new LatLng(51.5, -0.1), new LatLng(40.7, -74.0))
.width(5)
.color(Color.RED));
只需.add
根据需要多次调用。
于 2013-08-16T04:52:59.103 回答
2
只需创建一个函数来检索 JSON 折线,如下所示:
private ArrayList<LatLng> getPolylines(String jsonStr) {
// file exists, it is the first boot
if (jsonStr != null) {
// linea init
LatLng polyline;
// array list of lines init
ArrayList<LatLng> polylines = new ArrayList<LatLng>();
// get json array
JSONArray jsonArray = JSON.getJSONArray(jsonStr, "polytag");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonPolyline;
try {
jsonPolyline = jsonArray.getJSONObject(i);
polyline = new LatLng(Double.valueOf(jsonPolyline.getString("lat")),
Double.valueOf(jsonPolyline.getString("lon")));
polylines.add(polyline);
} catch (JSONException e) {
Log.d(TAG, "JSONException reading polylines: " + e.getMessage());
} catch (Exception e) {
Log.d(TAG, "Exception reading polylines: " + e.getMessage());
}
}
return polylines;
}
return null;
}
然后获取这个 ArrayList 并以这种方式填充它:
ArrayList<LatLng> polylines = getPolylines(linesJsonStr);
map.addPolyline(new PolylineOptions().addAll(polylines).width(2.0f).color(Color.RED));
希望能帮助到你!
于 2013-09-20T07:35:27.953 回答
0
您可以遍历点数组,并为每个坐标添加一个新的 LatLng 到折线选项,然后在循环之后将折线选项添加到折线。
val from = LatLng(it.data[0].lat, it.data[0].lng)
val to = LatLng(it.data.last().lat, it.data.last().lng)
map.addMarker(MarkerOptions().position(from).title("pickup location"))
map.addMarker(MarkerOptions().position(to).title("destination location"))
map.animateCamera(CameraUpdateFactory.newLatLngZoom(from, 13f))
var polylineOptions = PolylineOptions()
for (i in it.data){
polylineOptions.add(LatLng(i.lat, i.lng))
}
polylineOptions.width(5f).color(Color.RED)
map.addPolyline(
polylineOptions
)
于 2019-12-31T10:56:12.220 回答