Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android, ¿Cómo eliminar todos los marcadores de Google Map V2?

Tengo vista del mapa en mi fragmento. Necesito actualizar el mapa y añadir marcadores diferentes en función de la condición. Por lo tanto, debo quitar los últimos marcadores del mapa antes de añadir nuevos marcadores.

En realidad, hace algunas semanas la aplicación funcionaba bien y de repente sucedió. Mi código es así:

  • ¿Cuál es la forma recomendada de usar Google Map v2 dentro del fragmento?
  • Cómo eliminar un solo marcador con Google Maps V2?
  • ¿Por qué volver a recuperar Google Maps para Android usando datos KML ya no funciona?
  • Cómo agregar la dependencia del proyecto google-play-services.jar para que mi proyecto se ejecute y presente el mapa
  • El alias Keytool no existe
  • Resolvamos el error "Error al encontrar estilo 'mapViewstyle' en tema actual"
  • private void displayData(final List<Venue> venueList) { // Removes all markers, overlays, and polylines from the map. googleMap.clear(); . . . } 

    La última vez que funcionaba bien (antes de que el nuevo API de Google Map sea anunciado por el equipo de Android en E / S 2013). Sin embargo, después de eso adapté mi código para usar esta nueva API. Ahora, no sé por qué este método googleMap.clear(); No funciona

    Cualquier sugerencia sería apreciada. Gracias

    Unesdoc.unesco.org unesdoc.unesco.org

    Actualizar

    Unesdoc.unesco.org unesdoc.unesco.org

    Código completo:

     private void displayData(final List<Venue> venueList) { // Removes all markers, overlays, and polylines from the map. googleMap.clear(); // Zoom in, animating the camera. googleMap.animateCamera(CameraUpdateFactory.zoomTo(ZOOM_LEVEL), 2000, null); // Add marker of user's position MarkerOptions userIndicator = new MarkerOptions() .position(new LatLng(lat, lng)) .title("You are here") .snippet("lat:" + lat + ", lng:" + lng); googleMap.addMarker(userIndicator); // Add marker of venue if there is any if(venueList != null) { for(int i=0; i < venueList.size(); i++) { Venue venue = venueList.get(i); String guys = venue.getMaleCount(); String girls= venue.getFemaleCount(); String checkinStatus = venue.getCan_checkin(); if(checkinStatus.equalsIgnoreCase("true")) checkinStatus = "Checked In - "; else checkinStatus = ""; MarkerOptions markerOptions = new MarkerOptions() .position(new LatLng(Double.parseDouble(venue.getLatitude()), Double.parseDouble(venue.getLongitude()))) .title(venue.getName()) .snippet(checkinStatus + "Guys:" + guys + " and Girls:" + girls) .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_orange_pin)); googleMap.addMarker(markerOptions); } } // Move the camera instantly to where lat and lng shows. if(lat != 0 && lng != 0) googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), ZOOM_LEVEL)); googleMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { @Override public View getInfoWindow(Marker marker) { return null; } @Override public View getInfoContents(Marker marker) { return null; } }); googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { @Override public void onInfoWindowClick(Marker marker) { String str = marker.getId(); Log.i(TAG, "Marker id: " + str); str = str.substring(1); int markerId = Integer.parseInt(str); markerId -= 1; // Because first item id of marker is 1 while list starts at 0 Log.i(TAG, "Marker id " + markerId + " clicked."); // Ignore if User's marker clicked if(markerId < 0) return; try { Venue venue = venueList.get(markerId); if(venue.getCan_checkin().equalsIgnoreCase("true")) { Fragment fragment = VenueFragment.newInstance(venue); if(fragment != null) changeFragmentLister.OnReplaceFragment(fragment); else Log.e(TAG, "Error! venue shouldn't be null"); } } catch(NumberFormatException e) { e.printStackTrace(); } catch(IndexOutOfBoundsException e) { e.printStackTrace(); } } }); 

  • Android - Cómo acceder a los elementos de menú de la barra de acciones en la clase de fragmento
  • ¿Cómo activar programaticamente el evento táctil en android?
  • App declara una dependencia de la configuración 'compilar' a la configuración 'default' que no se declara en el descriptor para el proyecto
  • Reaccione errorTimeout nativo que consigue lista del dispositivo. Cuando se ejecuta hola mundo en ubuntu
  • ¿Cómo usar Robotium con Android Studio?
  • Firebase mensajería NoSuchMethodError.zzUr excepción
  • 3 Solutions collect form web for “Android, ¿Cómo eliminar todos los marcadores de Google Map V2?”

    Bueno, finalmente encontré una forma de reemplazo para resolver mi problema. El problema interesante es cuando asignas un marcador al mapa, es id es 'm0'. Cuando se elimina del mapa y se asigna un nuevo marcador, se espera que el id deba ser 'm0' pero es 'm1'. Por lo tanto, me mostró que el id no es confiable. Así que List<Marker> markerList = new ArrayList<Marker>(); En algún lugar de onActivityCreated() de mi fragmento.

    Luego cambiado por encima del código con el siguiente. Espero que ayude a otros si tienen problema similar con los marcadores.

     private void displayData(final List<Venue> venueList) { Marker marker; // Removes all markers, overlays, and polylines from the map. googleMap.clear(); markerList.clear(); // Zoom in, animating the camera. googleMap.animateCamera(CameraUpdateFactory.zoomTo(ZOOM_LEVEL), 2000, null); // Add marker of user's position MarkerOptions userIndicator = new MarkerOptions() .position(new LatLng(lat, lng)) .title("You are here") .snippet("lat:" + lat + ", lng:" + lng); marker = googleMap.addMarker(userIndicator); // Log.e(TAG, "Marker id '" + marker.getId() + "' added to list."); markerList.add(marker); // Add marker of venue if there is any if(venueList != null) { for (Venue venue : venueList) { String guys = venue.getMaleCount(); String girls = venue.getFemaleCount(); String checkinStatus = venue.getCan_checkin(); if (checkinStatus.equalsIgnoreCase("true")) checkinStatus = "Checked In - "; else checkinStatus = ""; MarkerOptions markerOptions = new MarkerOptions() .position(new LatLng(Double.parseDouble(venue.getLatitude()), Double.parseDouble(venue.getLongitude()))) .title(venue.getName()) .snippet(checkinStatus + "Guys:" + guys + " and Girls:" + girls) .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_orange_pin)); marker = googleMap.addMarker(markerOptions); // Log.e(TAG, "Marker id '" + marker.getId() + "' added to list."); markerList.add(marker); } } // Move the camera instantly to where lat and lng shows. if(lat != 0 && lng != 0) googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), ZOOM_LEVEL)); googleMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { @Override public View getInfoWindow(Marker marker) { return null; } @Override public View getInfoContents(Marker marker) { return null; } }); googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { @Override public void onInfoWindowClick(Marker marker) { int markerId = -1; String str = marker.getId(); Log.i(TAG, "Marker id: " + str); for(int i=0; i<markerList.size(); i++) { markerId = i; Marker m = markerList.get(i); if(m.getId().equals(marker.getId())) break; } markerId -= 1; // Because first item of markerList is user's marker Log.i(TAG, "Marker id " + markerId + " clicked."); // Ignore if User's marker clicked if(markerId < 0) return; try { Venue venue = venueList.get(markerId); if(venue.getCan_checkin().equalsIgnoreCase("true")) { Fragment fragment = VenueFragment.newInstance(venue); if(fragment != null) changeFragmentLister.OnReplaceFragment(fragment); else Log.e(TAG, "Error! venue shouldn't be null"); } } catch(NumberFormatException e) { e.printStackTrace(); } catch(IndexOutOfBoundsException e) { e.printStackTrace(); } catch (NullPointerException e) { e.printStackTrace(); } } }); } 

    Si desea borrar "todos los marcadores, superposiciones y polilíneas del mapa", utilice clear() en su GoogleMap.

    Utilice map.clear() para eliminar todos los marcadores del mapa de Google

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.