2016-03-22 1 views
0

Я создаю приложение для отслеживания моего шага. Я использую API MAP Google (V2). Я нарисовал свой шаг во время ходьбы (в реальном времени) это мой код.Не удается удалить полилинию в Google Map (Android)

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); 
} 

Рисование маршрута для реального времени хорошее. Но удаление Polyline не работает. Helpme

+0

Вы можете использовать «googlemap.clear();» для очистки карты google –

+0

есть ли какое-либо исключение или ошибка, отображаемая в logcat при попытке удалить полилинию? –

+0

Да. Logcat понятен. Ошибка или исключение не происходит. – user5819962

ответ

1

Я думаю, что ваша проблема в этой области.

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; 

пытается initilze карты как этот

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 не получают объект карты каждый раз при нажатии на кнопку. просто инициализировать один раз в начале

2, когда вы звоните polyline.remove вы также должны вызвать map.clear();

+0

Ох, Спасибо за ваш ответ. Я инициализирую карту в onCreate и карта статична. map = ((MapFragment) getFragmentManager(). FindFragmentById (R.id.map)). GetMap(); map.animateCamera (CameraUpdateFactory.zoomTo (10), 2000, null); Это проблема ...? – user5819962

+0

приветствую .. позвольте мне добавить больше в ответ –

+0

проверить обновленный ответ –