Quiero mostrar un mapa de Google estático en una vista de imagen. Algo similar a "Whatsapp" que muestra mientras comparte la ubicación. ¿Cómo puedo hacer esto?¿Cómo mostrar el mapa estático de Google en la vista de la imagen de Android?
Respuesta
Google ofrece la API de mapas estáticos de forma gratuita.
Puede descargar un mapa de bits configurado dinámicamente desde la web, almacenarlo en el sistema de archivos o en la memoria y luego obtener un dibujable para configurarlo en ImageView.
Debe generar una url a partir de sus coordenadas para cargar los datos de la web utilizando esta url. Exemple de un mapa de bits de 200x200 que muestra la Torre Eiffel en París:
String latEiffelTower = "48.858235";
String lngEiffelTower = "2.294571";
String url = "http://maps.google.com/maps/api/staticmap?center=" + latEiffelTower + "," + lngEiffelTower + "&zoom=15&size=200x200&sensor=false"
StackOverflow ya tienen alguna respuesta sobre cómo descargar una imagen de la web con el fin de mostrarlo en una imageview: https://stackoverflow.com/search?q=imageview+url+%5Bandroid%5D
puede encontrar aquí la documentación para el Google Static Maps API.
En primer lugar, toma la imagen de su mapa que se muestra en una carpeta dibujable después de ese uso como fondo de ese imageView.
no relacionado con la cuestión –
public static Bitmap getGoogleMapThumbnail(double lati, double longi){
String URL = "http://maps.google.com/maps/api/staticmap?center=" +lati + "," + longi + "&zoom=15&size=200x200&sensor=false";
Bitmap bmp = null;
HttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet(URL);
InputStream in = null;
try {
in = httpclient.execute(request).getEntity().getContent();
bmp = BitmapFactory.decodeStream(in);
in.close();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bmp;
}
¡Este código está desactualizado! –
Como lo menciona @pcans, me gusta mucho su solución. Puede usar una cadena como URL para cargar su imagen en ImageView. Sugiero una biblioteca de terceros para una imagen de carga: https://github.com/koush/ion
esperanza de que pueda ayudar a :)
También puede mostrar una imagen estática de forma nativa con el SDK ahora (esto se añadió en diciembre de 2014): https://developers.google.com/maps/documentation/android/lite
Esto dará como resultado un MapView.
Esta es la mejor respuesta hoy en día. – swooby
buena respuesta ... gracias :) – charlotte
¿Tiene un ejemplo completo de cómo usarlo? – smartmouse
Además, otra solución es la biblioteca de Picasso: "Un potente biblioteca de descarga de imágenes y almacenamiento en caché para Android"
darle una URL de la imagen de Picasso y luego lo hace una petición GET y se carga la imagen. Si la petición falla, entonces Picasso puede establecer una imagen predeterminada.
Incluso puede establecer una animación de progreso mientras se carga la imagen.
Es una solución buena y limpia.
Un ejemplo:
ImageView ivUrl = (ImageView) view.findViewById(R.id.iv_photo);
Picasso.with(getContext()).cancelRequest(ivUrl);
Picasso.with(getContext())
.load(imageUrlString)
.error(R.drawable.ic_error)
.placeholder(R.drawable.progress_animation)
.into(ivUrl);
vista Web es mi sugerencia para ello.
crear un archivo HTML static_map.html dentro de la carpeta html en la carpeta de recursos
su contenido puede ser como el siguiente
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
html,body{
padding:0;
margin:0;
}
.map{
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<img class="map" src="REPLACE_HERE" >
</body>
</html>
A continuación, mediante programación crear una URL mapa estático y reemplazar REPLACE_HERE cuerda con ella. A continuación, cárguelo en la vista web.Esto reducirá mucho nuestro esfuerzo.
El código es el siguiente
try {
String url ="https://maps.googleapis.com/maps/api/staticmap?";
url+="&zoom=13";
url+="&size=600x300";
url+="&maptype=roadmap";
url+="&markers=color:green%7Clabel:G%7C"+latitude+", "+longitude;
url+="&key="+ YOUR_GOOGLE_API_KEY;
InputStream is = context.getAssets().open("html/static_map.html");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
String str = new String(buffer);
str = str.replace("REPLACE_HERE", url);
wv_map.getSettings().setJavaScriptEnabled(true);
wv_map.loadDataWithBaseURL("", str, "text/html", "UTF-8", "");
} catch (IOException e) {
}
- 1. mostrar widgets en la vista de mapa
- 2. ¿Cómo puedo mostrar el mapa de inclinación en Android?
- 3. ¿Cómo mostrar la carga de animación en la vista de la imagen de Android?
- 4. android - Cómo cortar una parte de la imagen y mostrarla en la vista de la imagen
- 5. Para mostrar el mapa de Google en el emmulator
- 6. Eliminar la imagen de una vista de imagen Android
- 7. Cómo mostrar el borde a la vista de imagen?
- 8. mejor manera de mostrar la imagen en la vista de cuadrícula es el desplazamiento suave
- 9. Cómo mostrar la vista previa de fuente de Google
- 10. Android, dibuje la ruta en el mapa de Google
- 11. Cómo mostrar la imagen de fondo en la vista de texto
- 12. Crear una imagen de la vista/pantalla en Android
- 13. ¿Cómo mostrar la imagen en TextView de Android?
- 14. Desactivar moverse en la vista de mapa
- 15. ¿Cómo guardo la imagen de la API del mapa de imágenes de google en mi servidor?
- 16. ¿Cómo puedo mostrar la imagen en la aplicación Android
- 17. ¿Cómo se establece el mapa de bits en la vista de imagen circular?
- 18. Visualización de la imagen YUV en Android
- 19. Android: ¿cómo mostrar la vista previa de la cámara con devolución de llamada?
- 20. Cómo mostrar las etiquetas en la vista de satélite en Google Maps
- 21. Mostrar la imagen de la base de datos sqlite usando el cursor en Android
- 22. imagen de Google Maps?
- 23. android - Cómo mostrar las instrucciones en la vista web
- 24. Android (MapView): ¿Cómo establecer el nivel de zoom de 4 millas en la vista de mapa?
- 25. Cómo mostrar el icono que parpadea en el mapa de Google
- 26. ¿Dónde desasignar correctamente el mapa de bits en la Vista de Android?
- 27. Dibujar círculo de cierto radio en la vista de mapa en Android
- 28. Enfoque en android: mantener la imagen a la vista
- 29. Android: Detener la reducción de la imagen
- 30. Mostrar la imagen en el centro de la página
no sabía que ... gracias por compartir! – WarrenFaith
¡Eso es genial! Utilicé una segunda vista de mapa que me causó muchos problemas (normalmente solo puede tener uno por proceso), pero probablemente me apegue a esta solución. Solo una pregunta: ¿se aplican aquí las 25k descargas por aplicación (https://developers.google.com/maps/documentation/staticmaps/#Limits)? Si es así, ¿cómo lo verifican? Las solicitudes provienen de diferentes dispositivos, la URL no tiene una clave api ... –
tiene razón, sin una clave de API, no pueden aplicar el límite de 25 KB por aplicación. Por ahora, esta api probablemente no tiene un límite, si las solicitudes provienen de diferentes ips. – pcans