¿Como crear markers dinamicamente con google maps api?

739 views
Skip to first unread message

fernandosg

unread,
Nov 25, 2012, 2:48:10 PM11/25/12
to android...@googlegroups.com
Saludos a todos, de nuevo aca con mis dudas de novato.
Sigo con el mismo proyecto en el cual pregunte sobre la textview, he creado un pequeño backend en web2py desde el servidor para la aplicacion, basicamente la funcion con la cual me atasque un poco es la siguiente:

En la aplicacion , en el apartado del mapa, quiero traer todas las latitudes y longitudes que me envie el script que tengo en el servidor, y que con estos datos, se creen dinamicamente los marcadores y estos se añadan en el mapa. Para no copiar y pegar tanto codigo, solo pondre el apartado de la duda:

--------------------DENTRO DE mapatest EN onCreate---------------------------------------------------
List< Overlay > mapOverlays = mapView.getOverlays();
        Drawable drawable = this.getResources().getDrawable(R.drawable.googleicon);
         
        MyItemizedOverlay itemizedoverlay = new MyItemizedOverlay(drawable, this);
 
        GeoPoint point = new GeoPoint(46066940, 23570000);
       //this will show you the map at the exact location you want (if you not set this you will see the map somewhere in America)
        mapView.getController().setCenter(point);
        OverlayItem overlayitem = new OverlayItem(point, "Title for dialog", "Alba Iulia City From Romania");
 
        GeoPoint point2 = new GeoPoint(35410000, 139460000);
        OverlayItem overlayitem2 = new OverlayItem(point2, "Title for dialog", "Japan");
 
        itemizedoverlay.addOverlay(overlayitem);
        itemizedoverlay.addOverlay(overlayitem2);        
        mapOverlays.add(itemizedoverlay);
--------------------------------------------------

En el codigo anterior, cree los marcadores con sus respectivos point de manera manual, y los añadí al arreglo itemizedovrelay ,para despues añadirlos al mapOverlays, la cuestion es que no quiero crearlos manualmente, ya que son varios marcadores que estan en la base de datos(tampoco son demasiados, unos 100 maximos), ¿como puedo crear marcadores de manera dinamica y añadirlos?

Jc Miñarro

unread,
Nov 25, 2012, 3:59:49 PM11/25/12
to android...@googlegroups.com
Pues tendrás que hacer una consulta a tu base de datos de forma que te devuelva 
latitud y longitud y los textos que quieras poner, entonces los recorres en un bucle
y los vas añadiendo algo como:

....
List<PointInfo> pointsInfo = this.getPointsInfoFromDB();
for (PointInfo pi : pointsInfo){
    GeoPoint gp = new GeoPoint(pi.getLat(), pi.getLng());
    OverlayItem oi = new OverlayItem(gp, pi.getTitle, pi.getDescription());
    itemizedoverlay.addOverlay(oi);
}
mapOverlay.add(itemizedoverlay);
....
--
Un saludo,
Jc Miñarro

-------------------------------------------------------------------------------------------
CarteleraApp - Consulta la cartelera y estrenos de los cines españoles.

Fernando Segura Gòmez

unread,
Nov 25, 2012, 4:03:16 PM11/25/12
to android...@googlegroups.com

Hola,muchas gracias por tu respuesta. Ya intente esa solucion, pero solo me añade el ultimo marcador añadido(el ultimo de la lista)¿ a ti te funciona de esa manera? Saludos

Jc Miñarro

unread,
Nov 25, 2012, 5:01:46 PM11/25/12
to android...@googlegroups.com
En principio con el código que te he puesto te lo debería de de añadir sin problemas.
Tienes que mirar que cada vez que creas un nuevo GeoPoint/OverlayItem lo haces 
con new o directamente declarar la variable dentro del bucle.
Si dices que solo te añade el último, es que no lo estás haciendo de esta forma, y lo 
que haces es simplemente modificar los datos del que tienes añadido.

German Viscuso

unread,
Nov 26, 2012, 11:07:08 AM11/26/12
to android...@googlegroups.com
Esto lo hice hace muchisiiiisimo tiempo y quizá sea obsoleto (no lo se) pero fijate como manejo varios bookmarks en un mapa con overlays aqui:


Fijate la clase BookmarkOverlay

Saludos.

German

2012/11/25 Fernando Segura Gòmez <angel...@gmail.com>



--


Reply all
Reply to author
Forward
0 new messages