varios studio mover markeroptions marcadores marcador mapas google custom agregar android android-maps-v2

studio - Cómo cambiar la posición de un marcador en un Android Map v2



markeroptions (4)

Necesito hacer lo siguiente: Tengo un Marcador en el mapa y necesito cambiar su posición. Así que intenté lo siguiente:

MarkerOptions a = new MarkerOptions() .position(new LatLng(50,6))); map.addMarker(a); a.position(new LatLng(50,5));

donde el mapa es un mapa de GoogleMap . Creo que tengo que refrescar el mapa o algo igual?


Definir "marcador" fuera de la función. por primera vez, será nulo y se ejecutará la condición "si". por segunda vez se ejecutará "else".

Marker marker = null; protected void onPostExecute(Coordinates coordinates) { LatLng latLong = new LatLng("lat", "long"); if (marker == null) { MarkerOptions options = new MarkerOptions().position(latLong) .title("Marker Title"); marker = mMap.addMarker(options); } else { marker.setPosition(latLong); } mMap.moveCamera(CameraUpdateFactory.newLatLng(latLong)); mMap.animateCamera(CameraUpdateFactory.zoomTo(16f)); }


Encontré la solución, necesito hacerlo así:

MarkerOptions a = new MarkerOptions() .position(new LatLng(50,6))); Marker m = map.addMarker(a); m.setPosition(new LatLng(50,5));


Hay un ejemplo de marcador móvil en la aplicación de demostración google map v2 .. En el archivo adt-bundle-linux/sdk/extras/google/google_play_services/samples/maps/src/com/exa‌​mple/mapdemo/MarkerDemoActivity.java (4.2. 2 ejemplos)

Aquí el código para mover un marcador:

public void animateMarker(final Marker marker, final LatLng toPosition, final boolean hideMarker) { final Handler handler = new Handler(); final long start = SystemClock.uptimeMillis(); Projection proj = mGoogleMapObject.getProjection(); Point startPoint = proj.toScreenLocation(marker.getPosition()); final LatLng startLatLng = proj.fromScreenLocation(startPoint); final long duration = 500; final Interpolator interpolator = new LinearInterpolator(); handler.post(new Runnable() { @Override public void run() { long elapsed = SystemClock.uptimeMillis() - start; float t = interpolator.getInterpolation((float) elapsed / duration); double lng = t * toPosition.longitude + (1 - t) * startLatLng.longitude; double lat = t * toPosition.latitude + (1 - t) * startLatLng.latitude; marker.setPosition(new LatLng(lat, lng)); if (t < 1.0) { // Post again 16ms later. handler.postDelayed(this, 16); } else { if (hideMarker) { marker.setVisible(false); } else { marker.setVisible(true); } } } }); }

este código animará el marcador de un geopunto a otro.


La mayoría de las respuestas en sugieren usar remove() para eliminar el marcador y luego crear uno nuevo usando addMarker . En lugar de hacer eso, simplemente guarde el marcador una vez en una variable de tipo Marker y luego actualice su ubicación.

MarkerOptions a = new MarkerOptions().position(new LatLng(50,6))); myMarker = mGoogleMap.addMarker(a);

Y luego, en lugar de eliminar y volver a crear un marcador, simplemente use

myMarker.setPosition(newLatLng);

Espero que esto ayude !!