title: move marker on google maps api 2
body: <p>How do I move marker on Google maps api V2 ? I am using below code but it does not move marker on the map. What am I doing wrong here ? This should work when location changes, so I have added onLocationChanged method and in that, am getting location details and trying to move marker on new details, but this doesn't work.  </p>
  
  <p><strong>Here is my code:</strong> </p>
  
  <pre><code>import com.google.android.gms.common.ConnectionResult;
  import com.google.android.gms.common.GooglePlayServicesUtil;
  import com.google.android.gms.maps.CameraUpdateFactory;
  import com.google.android.gms.maps.GoogleMap;
  
  import com.google.android.gms.maps.model.BitmapDescriptorFactory;
  import com.google.android.gms.maps.model.LatLng;
  import com.google.android.gms.maps.model.MarkerOptions;
  import com.google.gson.Gson;
  
  public class MapViewActivity extends Activity implements LocationListener,
          SensorEventListener, OnClickListener {
  
      GoogleMap googleMap;
  
      private boolean started = false;
      private ArrayList&lt;AccelLocData&gt; sensorData;
      private SensorManager sensorManager;
      private Button btnStart, btnStop;
      private String provider;
  
      // File root, dir, sensorFile;
      FileOutputStream fOut;
      private Sensor mAccelerometer;
      private FileWriter writer;
      private DatabaseHelper databaseHelper;
      private BroadcastReceiver alarmReceiver;
      private PendingIntent pendingIntentSender, pendingIntentReceiver;
  
      private AlarmManager alarmManager;
      private Intent alarmIntent,alarmIntent2;
  
      // private Button btnUpload;
  
      @SuppressLint("NewApi")
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          try {
  
              databaseHelper = new DatabaseHelper(this);
              databaseHelper.removeAll();
  
  
              Log.v("datacount",
                      Integer.toString(databaseHelper.getLocDataCount()));
  
              sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
              mAccelerometer = sensorManager
                      .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
  
              btnStart = (Button) findViewById(R.id.btnStart);
              btnStop = (Button) findViewById(R.id.btnStop);
              btnStart.setOnClickListener(this);
              btnStop.setOnClickListener(this);
              btnStart.setEnabled(true);
              btnStop.setEnabled(false);
  
              alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
  
              int status = GooglePlayServicesUtil
                      .isGooglePlayServicesAvailable(getBaseContext());
              if (status != ConnectionResult.SUCCESS) { // Google Play Services
                                                          // are
                                                          // not available
  
                  int requestCode = 10;
                  Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status,
                          this, requestCode);
                  dialog.show();
  
              } else { // Google Play Services are available
  
                  // Getting reference to the SupportMapFragment of
                  // activity_main.xml
                  // SupportMapFragment supportMapFragment = (MapFragment)
                  // getFragmentManager().findFragmentById(R.id.map);
  
                  // Getting GoogleMap object from the fragment
                  googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
  
  
                  // can use for overlay on the map
                  List&lt;Double&gt; latList = new ArrayList&lt;Double&gt;();
                  latList.add(145.7309593);
                  latList.add(146.34);
                  latList.add(147.34);
  
                  List&lt;Double&gt; lonList = new ArrayList&lt;Double&gt;();
                  lonList.add(-122.6365384);
                  lonList.add(-123.6365384);
                  lonList.add(-124.6365384);
  
                  for (int i = 0; i &lt; 3; i++) {
                      // LatLng latLng = new LatLng(45.7309593, -122.6365384);
                      LatLng latLng = new LatLng(latList.get(i).doubleValue(),
                              lonList.get(i).doubleValue());
                      googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                      googleMap
                              .addMarker(new MarkerOptions()
                                      .position(latLng)
                                      .title("My Spot")
                                      .snippet("This is my spot!")
                                      .icon(BitmapDescriptorFactory
                                              .defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
                  }
  
                  // Enabling MyLocation Layer of Google Map
                  googleMap.setMyLocationEnabled(true);
  
                  LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
  
                  Criteria criteria = new Criteria();
                  provider = locationManager.getBestProvider(criteria, true);
                  Location location = locationManager
                          .getLastKnownLocation(provider);
  
                  if (location != null) {
                      onLocationChanged(location);
                  }
  
                  locationManager
                          .requestLocationUpdates(provider, 20000, 0, this);
              }
          } catch (Exception e) {
              e.printStackTrace();
          }
  
      }
  
      public void onSensorChanged(SensorEvent event) {
  
          if (started) {
  
              double x = event.values[0];
              double y = event.values[1];
              double z = event.values[2];
  
              long timestamp = System.currentTimeMillis();
  
              LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
              Criteria criteria = new Criteria();
              criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
              criteria.setAccuracy(Criteria.ACCURACY_FINE);
  
              provider = locManager.getBestProvider(criteria, true);
              Location location = locManager.getLastKnownLocation(provider);
  
              double latitude = 0;
              double longitude = 0;
              if (location != null) {
                  latitude = location.getLatitude();
                  longitude = location.getLongitude();
              }
              AccelLocData accelLocData = new AccelLocData(timestamp, x, y, z,
                      latitude, longitude);
  
              // Log.d("X data","data x:" + data.getX());
  
              try {
                  // writer.write(data.toString());
                   if (databaseHelper != null)
                   databaseHelper.insertLocData(accelLocData);
              } catch (Exception e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
  
          }
      }
  
      @Override
      public void onLocationChanged(Location location) {
  
          TextView tvLocation = (TextView) findViewById(R.id.tv_location);
  
          // Getting latitude of the current location
          double latitude = location.getLatitude();
  
          // Getting longitude of the current location
          double longitude = location.getLongitude();
  
          // Creating a LatLng object for the current location
          LatLng latLng = new LatLng(latitude, longitude);
  
          // Showing the current location in Google Map
          googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
  
          // Zoom in the Google Map
          googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
  
  
  
  
  
  
      }
  
      @Override
      public void onClick(View v) {
          switch (v.getId()) {
          case R.id.btnStart:
  
              Context context = getApplicationContext();
              alarmIntent = new Intent(context, AccelLocSender.class);
  
              AlarmManager alarmManager = (AlarmManager) context
                      .getSystemService(Context.ALARM_SERVICE);
              pendingIntentSender = PendingIntent.getBroadcast(context, 0,
                      alarmIntent, 0);
  
              alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                      System.currentTimeMillis(), 60000, pendingIntentSender);
  
              alarmIntent2 = new Intent(context, AccelLocReceiver.class);
              pendingIntentReceiver = PendingIntent.getBroadcast(context, 0,
                      alarmIntent2, 0);
              alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                      System.currentTimeMillis(), 30000, pendingIntentReceiver);
  
              btnStart.setEnabled(false);
              btnStop.setEnabled(true);
              Log.d("startbutton", "cam on click of start");
              started = true;
  
              // delete all files..
              // start thread to send data
  
              sensorManager.registerListener(this, mAccelerometer,
                      SensorManager.SENSOR_DELAY_FASTEST);
              break;
          case R.id.btnStop:
              try {
                  btnStart.setEnabled(true);
                  btnStop.setEnabled(false);
                  // btnUpload.setEnabled(true);
                  started = false;
  
                  sensorManager.unregisterListener(this);
  
                  Context context1 = getApplicationContext();
                  AlarmManager alarmManager1 = (AlarmManager) context1
                          .getSystemService(Context.ALARM_SERVICE);
                  alarmManager1.cancel(pendingIntentSender);
                  alarmManager1.cancel(pendingIntentReceiver);
  
              //  System.exit(0);
  
                  } catch (Exception e) {
                  e.printStackTrace();
              }
              break;
          default:
              break;
          }
  
      }
  
      protected void onPause() {
          super.onPause();
  
          /*
           * if (writer != null) { try { writer.close(); } catch (IOException e) {
           * // TODO Auto-generated catch block e.printStackTrace(); } }
           */
      }
  
      protected void onResume() {
          super.onResume();
          /*
           * try { Log.d("onresume","called onresume"); writer = new
           * FileWriter(sensorFile, true); } catch (IOException e) { // TODO
           * Auto-generated catch block e.printStackTrace(); }
           */
      }
  
      @Override
      public void onProviderDisabled(String arg0) {
          // TODO Auto-generated method stub
  
      }
  
      @Override
      public void onProviderEnabled(String provider) {
          // TODO Auto-generated method stub
  
      }
  
      @Override
      public void onStatusChanged(String provider, int status, Bundle extras) {
          // TODO Auto-generated method stub
  
      }
  
      @Override
      public void onAccuracyChanged(Sensor arg0, int arg1) {
          // TODO Auto-generated method stub
  
      }
  
  }
  </code></pre>