如何在两个 Latlong 点之间画线?

How to draw line between two Latlong points?

使用折线我可以在两点之间创建路径。

但是当我使用这两点的时候 (艾哈迈达巴德到纽约) 不创建折线。 否则,如果两点之间没有 SEA,它会起作用。

当积分像

时我遇到了问题

但在这种情况下,它是从普杰到艾哈迈达巴德的工作

你可以像下面一样画

 PolylineOptions rectOptions = new PolylineOptions();
    LatLng polLatLng = null;
    if (points.size() > 0) {
        ArrayList<LatLng> pathPoint = new ArrayList<LatLng>();
        for (int k = 0; k < points.size(); k++) {
            double polLat = points.get(k).latitude;
            double polLng = points.get(k).longitude;
            pathPoint.add(new LatLng(polLat, polLng));
            polLatLng = new LatLng(polLat, polLng);
        }
        double startLatitude = points.get(0).latitude;
        double startLongitude = points.get(0).longitude;
        double endLatitude = points.get(points.size() - 1).latitude;
        double endLongitude = points.get(points.size() - 1).longitude;
        LatLng start = new LatLng(startLatitude, startLongitude);
        LatLng end = new LatLng(endLatitude, endLongitude);

        mMap.addMarker(new MarkerOptions().position(start).title("start"));
        mMap.addMarker(new MarkerOptions().position(end).title("end"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(polLatLng));
        mMap.animateCamera(CameraUpdateFactory.zoomTo(10));
        rectOptions.addAll(pathPoint);
        rectOptions.width(10);
        rectOptions.color(Color.BLUE);
        mMap.addPolyline(rectOptions);
 solution 1:

    private void showDirection(LatLng source, LatLng destination) {

    Map<String, String> hashMap = new HashMap<String, String>();

    final String url = "http://maps.googleapis.com/maps/api/directions/json?origin="
            + source.latitude
            + ","
            + source.longitude
            + "&destination="
            + destination.latitude
            + ","
            + destination.longitude
            + "&sensor=false";
    new HttpRequester(activity, hashMap, StaticValues.ServiceCode.GET_ROUTE, true,
            this);
    Utils.showCustomProgressDialog(activity,
            getString(R.string.text_getting_direction), false, null);
}


solution 2:
private void build_retrofit_and_get_response(String type) {

    String url = "https://maps.googleapis.com/maps/";

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(url)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    RetrofitMaps service = retrofit.create(RetrofitMaps.class);

    Call<Example> call = service.getDistanceDuration("metric", StartLocation.latitude + "," + StartLocation.longitude,
            EndLocation.latitude + "," + EndLocation.longitude, type);

    call.enqueue(new Callback<Example>() {
        @Override
        public void onResponse(Response<Example> response, Retrofit retrofit) {

            try {
                //Remove previous line from map
                if (line != null) {
                    line.remove();
                }
                // This loop will go through all the results and add marker 
on each location.
                for (int i = 0; i < response.body().getRoutes().size(); i++) {
                    String distance = response.body().getRoutes().get(i).getLegs().get(i).getDistance().getText();
                    String time = response.body().getRoutes().get(i).getLegs().get(i).getDuration().getText();
//          activity.setTitleActionBar("Distance:" + distance + ", Duration:" + time);
                    String encodedString = response.body().getRoutes().get(0).getOverviewPolyline().getPoints();
                    List<LatLng> list = decodePoly(encodedString);
                    line = mGoogleMap.addPolyline(new PolylineOptions()
                            .addAll(list)
                            .width(10)
                            .color(Color.RED)
                            .geodesic(true)
                    );
                }
            } catch (Exception e) {
                Log.d("onResponse", "There is an error");
                e.printStackTrace();
            }
        }

        @Override
        public void onFailure(Throwable t) {
            Log.d("onFailure", t.toString());
        }
    });

}

最后我得到了 OlaUber 应用如何执行这些操作的答案..

ArrayList<LatLng> points = new ArrayList<LatLng>();
                PolylineOptions polyLineOptions = new PolylineOptions();
                points.add(new LatLng(from_latitude,from_longitude));
                points.add(new LatLng(to_latitude,to_longitude));
                polyLineOptions.width(7 * 1);
                polyLineOptions.geodesic(true);
                polyLineOptions.color(activity.getResources().getColor(R.color.black));
                polyLineOptions.addAll(points);
                Polyline polyline = mMap.addPolyline(polyLineOptions);
                polyline.setGeodesic(true);