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)
- Google Map Android API v2 no puede mostrar el mapa en la aplicación de Google Play Store
- Android - SupportMapFragment con GoogleMaps API 2.0 dando IllegalArgumentException
- Androide Zoom-a-Fit Todos los marcadores en Google Map v2
- Dibuje cinco círculos transparentes en el mapa google v2 tomando la ubicación actual como el centro del círculo
- barra de búsqueda en google map 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?
- Ocultar infowindow android map api v2
- Mapapi v2 en android causando error en el fragmento
- Para Android google maps API V2 ¿cómo se establece zindex de marcador?
- Google Map API v2 no actualiza Maps una vez que se reinicie la aplicación
- Google Maps V2 muestra pantalla en blanco en Android 2.2
- La biblioteca de soporte de Android v4 y la API de Google Maps rompen la compilación
- Mapas api2 animateCamera problemas de velocidad
- Android: Cómo agregar marcador animado
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 depurar la aplicación Google Glass GDK?
- ActionBarCompat muestra todas las acciones en el menú de desbordamiento