2

如何在谷歌地图中为多个经纬度坐标绘制折线。我需要为至少 20 组经纬度动态绘制折线。

4

4 回答 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 回答