Android toque en el mapa y obtenga coordenadas
Hola chicos Estoy tratando de hacer una aplicación que una vez que el usuario grifos en un mapa que obtiene las coordenadas de ese punto específico.
Entre otros, también he leído que: Obtener coordenadas en la toma de mapa en android
- Barra de Acción cortada con SlidingMenu y Overlay de ActionBar Sherlock
- GoogleMap necesita activación?
- ¿Cómo funcionan las superposiciones de fuentes de Android?
- Caché que se está dibujando en MapView en Android
- OSMdroid - error: no se encontró ningún constructor adecuado para el constructor Overlay (sin argumentos) Overlay.Overlay (Context) no es aplicable
Parece que el post más relevante, pero lo que quiero hacer es poder tocar en cualquier parte del mapa no en un elemento marcador / superposición. De hecho, quiero crear un marcador en ese punto específico que el usuario pulsó y obtener las coordenadas de la misma.
¿Es eso posible?
Gracias
Micro
- ¿Cómo agregar una superposición rectangular en una aplicación de cámara?
- Android: Círculo de trazado MapView con radio dinámico (en metros)
- Tutorial - Android Mapa Pin gota animación - Trabajando derecho
- Superposición de Android para tomar todo el tacto, y pasarlos?
Sí. De hecho, la respuesta que le di a esa otra pregunta es lo que usted necesita.
Debe ser trivial con un poco de matemáticas. Puede utilizar getLatitudeSpan()
y getLongitudeSpan()
para obtener las extensiones del mapa visible y getMapCenter()
para ver el punto central. Simplemente muéstrelo a las coordenadas del evento táctil.
EDIT: Mark, como siempre, tiene una solución aún más elegante.
Deberá sobrescribir onTouchEvent ().
Espero que siguiendo el código ayudará u … mostrando usando onTouchEvent () mientras que el usuario levanta su dedo del mapa …
Dadas las coordenadas de pantalla del toque, puedes usar una Proyección (de getProjection () en MapView) para convertirla a latitud y longitud …
@Override public boolean onTouchEvent(MotionEvent event, MapView mapView) { GeoPoint point_touch; MapController map_controller=mapView.getController(); //---when user lifts his finger--- if (event.getAction() == event.ACTION_UP) { point_touch = mapView.getProjection().fromPixels((int) event.getX(),(int) event.getY()); Log.i("Cordinates","Lattitude="+point_touch.getLatitudeE6() / 1E6 +" Longitude="+point_touch.getLongitudeE6() /1E6 ); map_controller.animateTo(point_touch); return true; } else { return false; } }