Google Map API V2 – ¿Cómo puedo mantener un marcador en el centro de la pantalla mientras el usuario está desplazando el mapa?

Google Map API V2 – ¿Cómo puedo mantener un marcador en el centro de la pantalla mientras el usuario está desplazando el mapa?

Mi propósito es dejar que el usuario elija una ubicación. Utilizo el código siguiente para agregar un marcador (es del com.example.mapdemo en SDK de Android)

 mMap.addMarker(new MarkerOptions() .position(new LatLng(0, 0)) .title("Marker")); 

¿Cómo mantengo el marcador en el centro de la pantalla y luego recuperar su ubicación?

No creo que pueda mantener un marcador en el centro de la pantalla y flotar fácilmente. Mi sugerencia es engañar a su usuario. Añada su imagen del marcador en el mapa como un botón. Se puede colocar en el centro de la pantalla utilizando el diseño xml. Entonces cuando su usuario selecciona una localización apenas recupera las coordenadas de los gps del centro de la pantalla.

En una nota lateral también podría simplemente hacer su marcador draggable Entonces el usuario podría arrastrarlo alrededor del mapa.

 mMap.addMarker(new MarkerOptions().position(coordinate) .title("Your Title") .snippet("Please move the marker if needed.") .draggable(true)); 

¿Qué tal si?

 mMap.setOnCameraChangeListener(new OnCameraChangeListener() { public void onCameraChange(CameraPosition arg0) { mMap.clear(); mMap.addMarker(new MarkerOptions().position(arg0.target)); } }); 

Opción 1

Creo que la mejor opción es mover marcador, cuando el usuario mover mapa …

 googleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() { @Override public void onCameraMove() { marker.setPosition(googleMap.getCameraPosition().target);//to center in map } }); //note marker is global 

opcion 2

O simple, en su disposición, con la disposición relativa poner el fragmento, y en sobre el icono del marcador, usted calculará que el marcador estará siempre en el medio del mapa …

Creo que esto es complicado, por el tamaño de las pantallas, pero el teléfono no se moverá cada vez que el marcador …

Esto realmente sería posible superponiendo una vista personalizada en la parte superior de su mapa. Escribirías una clase que extienda View y podrías anular los métodos draw () y onTouchEvent () de tu vista, de manera que dibujaría (lo que parece) un marcador, encima de la parte superior del mapa. Cuando el usuario establece el marcador, se utiliza una proyección para traducir la ubicación de la pantalla del marcador en un LatLong en el mapa. A continuación, podría establecer un marcador adecuado en el mapa (que ahora se fijaría a la geolocalización).

Como se puede deducir de lo anterior, este no es el proceso más sencillo. Yo sugeriría ir con la solución de doubleA, para facilitar la implementación.

 Marker marker;//have a instance variable marker mMap.setOnCameraChangeListener(new OnCameraChangeListener(); public void onCameraChange(CameraPosition cameraPosition) { MarkerOptions options = new MarkerOptions() .position(cameraPosition.target); if(marker != null){marker.remove();} marker = mMap.addMarker(options); } 

Esto no será fácil porque, onCameraChange llamada no se llama durante frames.It intermedio se llama sólo después de que la cámara se cambia por completo.

Obtener una referencia de marcador cuando se llama addMarker. Después de que la cámara se mueve, mueve el marcador a la posición de destino devuelta por la cámara.

 private Marker marker; public void onMapReady(final GoogleMap googleMap) { LatLng sydney = new LatLng(-34, 151); MarkerOptions markerOptions = new MarkerOptions().position(sydney).title("Marker in Sydney"); marker = googleMap.addMarker(markerOptions); googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); googleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() { @Override public void onCameraMove() { final LatLng target = googleMap.getCameraPosition().target; marker.setPosition(target); } }); } 
  • Cómo mostrar la barra de escala de mapa en el mapa android v2
  • Buscar ruta con Androids API de Google Maps
  • ¿Cómo caché / descargar google map v2 tile programmatically?
  • Encuentra el restaurante más cercano, cafetería y supermercado usando google maps en android
  • OnMapReady no llamando aunque la visualización del mapa sin ningún error
  • La API de Google Maps v2 no funciona
  • Google Maps API V2 desaparecidos de google-play-services_lib.jar
  • ¿Cómo mostrar varios marcadores en MapFragment en Google Map API v2?
  • Cómo adjuntar un marcador flexible en el mapa algo así como Uber y Lyft?
  • Encuentra la distancia entre dos puntos en el mapa mediante Google Map API V2
  • Cómo mostrar la ubicación actual como flecha en Google Maps Android API V2?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.