PDA

Ver la Versión Completa : [ CONSULTA ] thumbnail en pin de googlemaps.


disair
08/06/12, 13:02:35
hola;

Estoy con la api de google maps y me surge el problema de hacer un pin personalizable. es decir. 1º imagenes en una base de datos, servidor o cualquier otra cosa. 2º pin para google maps, con un espacio para una imagen. 3º puntos guardados en una BBDD. 4º impresion de los puntos en el mapa y en cada punto la imagen.

no se si me explico. vamos, que cada punto aparezca de un primer vistazo con la imagen que haya guardada para ese sitio.

alguien que sea superExperto en GoogleMaps API? :D

un saludo y muchas gracias.

monchyrcg
08/06/12, 13:27:34
Yo manejo la api de Maps pero no entiendo lo que quieres hacer.

disair
08/06/12, 13:36:25
si, mira, te comento.

la idea es: ver un mapa de un area, en la que aparecen pines. varios.
por lo general esos pines aparecen con un grafico (chincheta, punto, el que sea).
pues lo que quiero es que en lugar de que aparezcan todos los pines iguales, con el grafico definido para el pin, que aparezcan una especie de pin con foto.
de este modo, por ejemplo aparecerian 5 pines en el barrio X, con una foto cada pin, del usuario, o lugar, que determina el pin.

no se si me he explicado mejor?

muchisimas gracias.
:D

monchyrcg
08/06/12, 14:26:23
Creo que lo que quieres es pintar cualquier drawable en tu mapa no? Si es así es bastante fácil, supongo que tendrás tu clase que hereda de Overlay no? Simplemente en el método draw le dices lo que pintar, por ejemplo si tienes una imagen en tu proyecto solo tienes que hacer esto.

Este ejemplo te pinta en Sevilla (latitud y longitud buscadas en internet)


public class OverlayMapa extends Overlay {
private Double latitud = 37.40*1E6;
private Double longitud = -5.99*1E6;
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
{
Projection projection = mapView.getProjection();
GeoPoint geoPoint = new GeoPoint(latitud.intValue(), longitud.intValue());
if (shadow == false)
{
Point centro = new Point();
projection.toPixels(geoPoint, centro);

Paint p = new Paint();
p.setColor(Color.BLUE);

Bitmap bm = BitmapFactory.decodeResource(mapView.getResources( ),R.drawable.marcador_google_maps);
canvas.drawBitmap(bm, centro.x - bm.getWidth(),centro.y - bm.getHeight(), p)

}
}
}

disair
08/06/12, 14:34:18
ya.
efectivamente tengo ese codigo. eso pinta en sevilla el recurso R.drawable.marcador_google_maps.
pero yo lo que quiero es pintar muchos pines... con un formato base igual (pongamos que un pin con una punta indicando el sitio y un cuadrado pegado al estilo de bocadillo), y que en cada pin pueda aparecer una imagen distinta.
es que no se si me explico bien. yo he conseguido pintar N numero de pines en un mapa. geolocalizados como sea.
pero quiero que cada pin, contenga una imagen distinta.
lo que busco es que el pin sea customizable al maximo, es decir, que haya un bitmap de base que sea el pin, y sobre ese se imprima una imagen.

es decir, sobre una zona del mapa, que aparezcan 6 o 7 pines de usuarios que estan cerca, y que cada pin... sin necesidad de tocarlo, muestre el "avatar" de cada usuario. sabes lo que digo?

de nuevo, muchas gracias.
y un saludo!

monchyrcg
08/06/12, 14:44:33
Por fin nos entendemos jajajaja.

Como yo lo veo no creo que encuentres la solución en la api de Maps. Tu ya sabes como "pintar" sobre un mapa por lo tanto el problema no es saber "pintar" sino el que "pintar" no?

Los datos de los usuarios de donde los coges? Pensando rapido crea un clase auxiliar que herede de Bitmap y desde ahí vas creado tus bitmaps para luego pintarlos en el mapa.

Como yo lo veo el problema no lo tienes en el uso de la api de Maps.

mocelet
08/06/12, 15:09:30
EDIT: No había visto la respuesta de antes de monchyrcg. De Bitmap mejor no heredes nada, es mejor un getBitmap en tu clase auxiliar que pasándole el usuario te devuelva el bitmap. Cuando dejes de usar los bitmaps es muy importante llamar al método recycle() del bitmap o te quedarás sin memoria en un momento (OutOfMemoryError).

Vamos, quieres algo así, no?

http://a1.phobos.apple.com/us/r1000/058/Purple/57/b2/20/mzl.cluqsjfk.320x480-75.jpg

No he usado todavía el API de Maps, pero viendo que tienes un Canvas para pintar, ¿qué te impide pintar lo que quieras? Puedes tener un bitmap base y pintar encima el avatar.

Si no yo tampoco me he enterado :D

monchyrcg
08/06/12, 15:35:15
mocelet sabe más que yo así que hazle caso.
La API de maps es fácil de usar.

Eso es lo que le he dicho si puedes pintar, solo tienes que saber como pintarlo.

mocelet
08/06/12, 16:02:59
mocelet sabe más que yo así que hazle caso

Con mapas en Android no he tenido el gusto todavía, así que igual hay soluciones mejores que se adapten al API de mapas.

Pero sí es verdad que me he pegado bastante con los Bitmap y mejor que tengas muy bien controlado dónde y cuándo se crean y destruirlos cuanto antes (reciclarlos) para que no haya problemas de memoria.

disair
08/06/12, 16:38:57
mocelet. le has dado en el clavo. es exactamente eso. No controlo mucho de canvas y Bipmaps pero voy a echarle un ojo y probar a ver.
muchas gracias, a los dos. Da gusto este foro.
un saludo.