无法删除 Google 地图 (Android) 上的折线

Can't Remove Polyline on Google Map (Android)

我正在创建用于跟踪步数的应用程序。我使用 Google MAP API(V2)。我边走边画脚(实时) 这是我的代码。

    case R.id.btn_location:
            if(polyline != null) {
                polyline.remove();
            }
            if(mStatus == IDLE) {
                map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                        .getMap();
                getmyLocation.getmyLocation();
                map.clear();
            }
             break;
case R.id.btn_can_location:

            if (mStatus == RUNNING) {
                mTimer.removeMessages(0);
                mPauseTime = SystemClock.elapsedRealtime();
                mStatus = IDLE;
                loc_manager.removeUpdates(listener);
             break;

//---------------------------------------- ---------------------------------------------- -/

public class getMyLocation {
  private void getmyLocation() {
        if (loc_manager == null)
            loc_manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        long time = 3000; 

        float minDistance = 10;

        loc_manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, time, minDistance, listener);
        }
    }


private void getmyLocation() {
        if (loc_manager == null)
            loc_manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        long time = 3000; 

        float minDistance = 10;

        loc_manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, time, minDistance, listener);

static class MyLocationManager implements LocationListener {
    public void onLocationChanged(Location location) {
     polyline = map.addPolyline(polylineOptions.add(new LatLng(location.getLatitude(), location.getLongitude())));
        polylineOptions.width(5);
        polylineOptions.color(Color.RED);

        map.addPolyline(polylineOptions);
}

实时绘制路线不错。但是删除折线不起作用。 帮帮我

我认为你的问题出在这方面。

case R.id.btn_location:
            if(polyline != null) {
                polyline.remove();
            }
            if(mStatus == IDLE) {
                map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                        .getMap();
                getmyLocation.getmyLocation();
                map.clear();
            }
             break;

尝试像这样初始化地图

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

你还需要实现 OnMapReadyCallback 并像这样在地图中做任何你想做的事情

@Override
public void onMapReady(GoogleMap googleMap) {

    Double lat = Double.parseDouble(latt); // latt is string
    Double lang = Double.parseDouble(lngg); // langg is string
    LatLng location = new LatLng(lat, lang);
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(location, 16);
    googleMap.addMarker(new MarkerOptions().position(location).title(""));
    googleMap.moveCamera(CameraUpdateFactory.newLatLng(location));
    googleMap.animateCamera(cameraUpdate);
}

并在 xml 文件中添加此行。

<fragment
   android:id="@+id/map"
   android:name="com.google.android.gms.maps.SupportMapFragment"
   android:layout_width="match_parent"
   android:layout_height="@dimen/hundred_thirty_dp"/>

1 do not get the map object every time when you click the button. just initialize it once in the start

2 when you call polyline.remove you also need to call map.clear();