2016-03-22 11 views
0

私のステップを追跡するためのアプリを作成しています。私はGoogle MAP API(V2)を使用します。私は歩いている間に私の歩みを描きました(リアルタイム) これは私のコードです。Googleマップでポリラインを削除できない(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); 
} 

リアルタイムの描画ルートが良好です。しかし、ポリラインを削除することはできません。 ヘルプ

+0

を呼び出す必要がpolyline.remove呼び出すときだけ が開始

2で一度それを初期化「googlemap.clearを();」 Googleマップ –

+0

をクリアするには、ポリラインを削除しようとしているときにlogcatに例外またはエラーが表示されていますか? –

+0

はい。 Logcatはクリアです。エラーまたはexcetionは発生しません。 – 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; 

はまた、あなたが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ファイルのアドオンのように準備したい、これまで何を行う必要があり、この

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

のようなマップをinitilzeしようこの行

<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マップオブジェクトにあなたがボタンをクリックするたびに得ることはありません。あなたはまた、あなたが使用することができますmap.clear();

+0

ああ、あなたの答えをありがとう。私はonCreateでマップを初期化し、マップは静的です。 map =((MapFragment)getFragmentManager()。findFragmentById(R.id.map))。getMap(); map.animateCamera(CameraUpdateFactory.zoomTo(10)、2000、null); 問題ですか...? – user5819962

+0

ようこそ。私は答えに多くを追加します –

+0

更新された答えを確認してください –

関連する問題