entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Consulta sobre marcadores de Google Maps

Estoy trabajando con el API de Google maps, mas en especifico con los marcadores logro colocarlos pero no removerlos. Explico un poco el código:

Tengo esta función llamada origenDestino el cual lo que hace en general es agregar dos marcadores al mapa, como verán tengo un if el cual valida que si mi Array (meto los dos marcadores en un Array) ya esta lleno, es decir que si tiene los dos marcadores entonces no haga nada, esto para evitar que el usuario pongo mas de dos marcadores. PERO si el usuario da click de nuevo en el botón que llama la función y este ya tiene los dos marcadores, es decir ya esta lleno el Array entonces no agregara dos marcadores al contrario (else) borrara los marcadores y limpia el array (por si vuelve a dar clic agregue de nuevo los dos marcadores).

    public void origenDestino(View view) {
        Marker origenRandom =  null;
        Marker destino = null;

       if (markers.size() <= 1) {
            origenRandom = mapa.addMarker(new MarkerOptions().position(
                        new LatLng(mapa.getMyLocation().getLatitude(), mapa.getMyLocation().getLongitude()))
                        .title("Origen").draggable(true)
                        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)));
                markers.add(origenRandom);

            destino = mapa.addMarker(new MarkerOptions().position(new LatLng(21.1535404, -86.8435398))
                    .title("Destino")
                   .draggable(true)
                   .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
            markers.add(destino);
        }else{
           origenRandom.Remove();
           destino.Remove();
           marker.clear();
       }

El problema es simple, así como tengo el código no me esta funcionando los .Remove(); pero si el Clear(); del array, porque si vuelvo a llamar la función agrega otros dos marcadores.

El código esta mal? o que podría estar fallando.

Cabe aclarar que el Remove() si funciona cuando lo pongo seguido mapa.addMarker(), pero solo así me ha funcionado.

2 Respuestas

3votos

MortensenC Puntos500

origenRandom y destino son variables de instancia local del procedimiento. Cuando volves a entrar de nuevo estas variables no tienen ningun valor, deberias recuperar los valores del arreglo y luego hacer el remove:

...
}else{
   origenRandom.Remove();
   destino.Remove();
   marker.clear();
}
...
}else{
   origenRandom = markers[0];
   destino = markers[1];
   origenRandom.Remove();
   destino.Remove();
   markers.clear();
}

0voto

Andhii1293 comentado

Muchisimas gracias!!

Funciono perfecto solo le agregue el get a markers

destino = markers.get(1);
destino.remove();

y funciono...

Gracias! :D

1voto

x4mp73r Puntos13390

Te recomiendo que uses Log() en cada una de tus funciones para verificar si realmente las está haciendo o si se las está saltando.

Yo no eh aplicado la API pero te pongo estos links por si te sirve:

hiding and showing markers

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta