Да, вы можете попробовать на вашем конце, я просто хочу получить с этим GeoLocations: LatLng latLng1 = new LatLng (40.7128, 74.0059); // New York LatLng latLng2 = new LatLng (51.5074, 0.1278); // Лондон Пожалуйста, поделитесь своим обновленным кодом для того же .... Как вы знаете, я старался изо всех сил ...

арисовать полилинию дуги на карте Google?

Я уже пользоваласьэто код для созданияизогнутый Ломаная.

Здесьметод нарисовать изогнутую полилинию:

private void showCurvedPolyline (LatLng p1, LatLng p2, double k) {
    //Calculate distance and heading between two points
    double d = SphericalUtil.computeDistanceBetween(p1,p2);
    double h = SphericalUtil.computeHeading(p1, p2);

    //Midpoint position
    LatLng p = SphericalUtil.computeOffset(p1, d*0.5, h);

    //Apply some mathematics to calculate position of the circle center
    double x = (1-k*k)*d*0.5/(2*k);
    double r = (1+k*k)*d*0.5/(2*k);

    LatLng c = SphericalUtil.computeOffset(p, x, h + 90.0);

    //Polyline options
    PolylineOptions options = new PolylineOptions();
    List<PatternItem> pattern = Arrays.<PatternItem>asList(new Dash(30), new Gap(20));

    //Calculate heading between circle center and two points
    double h1 = SphericalUtil.computeHeading(c, p1);
    double h2 = SphericalUtil.computeHeading(c, p2);

    //Calculate positions of points on circle border and add them to polyline options
    int numpoints = 100;
    double step = (h2 -h1) / numpoints;

    for (int i=0; i < numpoints; i++) {
        LatLng pi = SphericalUtil.computeOffset(c, r, h1 + i * step);
        options.add(pi);
    }

    //Draw polyline
    mMap.addPolyline(options.width(10).color(Color.MAGENTA).geodesic(false).pattern(pattern));
}

ВЫХОД

1. Если я использую this.showCurvedPolyline (latLng1, latLng2, 0.1); затем получить:

Как вы можете видеть на изображении выше, мы очень близки к достижению нашей цели, но не знаем, почему она не соединяется с другой конечной точкой

2. Если я использую this.showCurvedPolyline (latLng1, latLng2, 1); затем получить:

3. Если я использую LatLng c = SphericalUtil.computeOffset (p, x, h - 90.0); затем получить:

Примечание: Я не очень хочуформа большого круга, действительноЯ не хочу стольковысота.

Вот чтоЯ хочу форму ARC как показано на рисунке ниже

ЗдесьКОД Я использую длядобавить изогнутую полилинию между двумяgeo-locatios :

private void addCurvedPolyLine() {

        LatLng latLng1 = new LatLng(40.7128, 74.0059); // New York
        LatLng latLng2 = new LatLng(51.5074, 0.1278); // London

        Marker marker1 = mMap.addMarker(new MarkerOptions().position(latLng1).title("Start"));
        Marker marker2 = mMap.addMarker(new MarkerOptions().position(latLng2).title("End"));

        LatLngBounds.Builder builder = new LatLngBounds.Builder();

        builder.include(marker1.getPosition());
        builder.include(marker2.getPosition());

        LatLngBounds bounds = builder.build();
        int padding = 0; // offset from edges of the map in pixels
        CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
        mMap.moveCamera(cu);
        mMap.animateCamera(cu);

        this.showCurvedPolyline(latLng1, latLng2, 0.1);

    }

Ответы на вопрос(0)

Ваш ответ на вопрос