18

以前に追加したポリラインを削除し、場所が変更されたときに新しいポリラインを再描画しようとしています。私は両方を試しました

this.routeToDestination.setPoints(pointsToDestination)およびthis.routeToDestination.remove()

しかし、どちらも機能しませんでした。

Google Maps Android API v2で動的な線(ルート)を描画する方法に従いましたが、問題を解決できませんでした

    @Override
    public void onResume() {
        super.onResume();

        routeToDestination = mMap.addPolyline(new PolylineOptions()
                .add(new LatLng(location.getLatitude(), location.getLongitude()),
                        new LatLng(this.destinationLatitude, this.destinationLongitude))
                .width(1)
                .color(Color.DKGRAY)

        );
    }

   @Override
    public void onLocationChanged(Location location) {

        List<LatLng> pointsToDestination = new ArrayList<LatLng>();
        pointsToDestination.add(new LatLng(location.getLatitude(), location.getLongitude()));
        pointsToDestination.add(new LatLng(destinationLatitude, destinationLongitude));

        this.routeToDestination.setPoints(pointsToDestination);
    }

}
4

3 に答える 3

46

ポリラインを削除するには、APIに記載されているremove()メソッドを使用する必要があります。

//Add line to map
Polyline line = mMap.addPolyline(new PolylineOptions()
            .add(new LatLng(location.getLatitude(), location.getLongitude()),
                    new LatLng(this.destinationLatitude, this.destinationLongitude))
            .width(1)
            .color(Color.DKGRAY)

//Remove the same line from map
line.remove();
于 2014-05-17T21:34:54.263 に答える
0

ポリラインのマップアクティビティでメンバー変数を作成します

    Polyline polyline_final = null;

このようにマップの値を割り当てるよりも、ポリラインがマップに追加されるたびに

polyline_final = mMap.addPolyline(polylineOptions);

次に、新しいポリラインを同時に作成して、前のポリラインフォームマップを削除します。polyline_final= mMap.addPolyline(polylineOptions);の前のif条件を適用します。

if (polylineOptions_final!=null)
                        {
                            polylineOptions_final.remove();
                        }

これで完了です

于 2021-04-25T06:43:46.300 に答える
0

それを行う最も簡単な方法

    implementation 'com.akexorcist:google-direction-library:1.2.1'

このライブラリを使用するからApiキーを取得する

https://developers.google.com/maps/documentation/directions/get-api-key

ディレクションAPIの場合、この請求方法を有効にする必要があります。

https://console.cloud.google.com/projectselector2/billing/enable

このコードを任意の関数に設定しますが、tteready関数には設定しません

 String serverKey = "AIzaSyCHEn5TVLk6xxuYn0-g11xxVzCu9eZiVbU";
      GoogleDirection.


        GoogleDirection.withServerKey(serverKey)
                .from(new LatLng(30.677717,73.106812))
                .to(new LatLng(31.345394,73.429810))
                .transitMode(TransportMode.WALKING)
                .unit(Unit.METRIC)
                .execute(new DirectionCallback() {
                    @Override
                    public void onDirectionSuccess(@Nullable Direction direction) {


                        Log.d("eeeeee", direction.getStatus());

                        if(direction.isOK()) {
                            // Do something
                            Route route = direction.getRouteList().get(0);
                            Leg leg = route.getLegList().get(0);

                            ArrayList<LatLng> directionPositionList = leg.getDirectionPoint();
                            Log.d("eeeeee", directionPositionList.size()+"eeeeee");
                            if (polylineOptions_final!=null)
                            {
                                polylineOptions_final.remove();
                            }
                            PolylineOptions polylineOptions = DirectionConverter.createPolyline(getApplication(), directionPositionList, 10, Color.RED);
                            polylineOptions_final = mMap.addPolyline(polylineOptions);
                        } else {
                            // Do something
                        }
//                        Log.d("eeeeee"+direction.getGeocodedWaypointList().toString(), "onDirectionSuccess: ");


                    }

                    @Override
                    public void onDirectionFailure(@NonNull Throwable t) {
                        Toast.makeText(ClientMap.this, "d"+t.getMessage().toLowerCase(), Toast.LENGTH_SHORT).show();

                    }
                });

新しいLatLng(31.345394,73.429810));

于 2021-04-25T06:50:47.927 に答える