Android setOnMarkerClickListener establecer título para cada marcador
He implementado un clustermarker en mi aplicación, tengo una lista de LatLng que viene de mi base de datos, ahora quiero mostrar el nombre de los clientes como título cuando el usuario hace clic en el marcador, pero cuando hago clic en el marcador que No me muestra nada, ¿cómo puedo lograrlo, este es mi código hasta ahora:
public class MapaViagem extends FragmentActivity { private GoogleMap googleMap; private String rm_IdViagem; private List<ClienteModel> mClienteModel = new ArrayList<ClienteModel>(); private List<EnderecoModel> mEnderecoModel = new ArrayList<EnderecoModel>(); private ViagemModel mViagemModel = new ViagemModel(); private ClusterManager<MyItem> mClusterManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.maps); ArrayList<LatLng> coordList = new ArrayList<LatLng>(); try { Bundle parametros = getIntent().getExtras(); rm_IdViagem = parametros.getString("id_viagem"); Repositorio ca = new Repositorio(this); mViagemModel = ca.getViagemPorId(Integer.valueOf(rm_IdViagem)); Repositorio cl = new Repositorio(this); mClienteModel = cl.getClientesViagem(Integer.valueOf(rm_IdViagem)); int i; for ( i = 0; i < mClienteModel.size(); i++) { Repositorio mRepositorio = new Repositorio(this); mEnderecoModel = mRepositorio.getListaEnderecosDoCliente(Integer.valueOf(mClienteModel.get(i).getClientes_id())); System.out.println("NOMES " + mClienteModel.get(i).getNome()); for (int j = 0; j < mEnderecoModel.size(); j++) { // Loading map initilizeMap(); // Changing map type googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); // googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); // googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); // googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN); // googleMap.setMapType(GoogleMap.MAP_TYPE_NONE); // Showing / hiding your current location googleMap.setMyLocationEnabled(true); // Enable / Disable zooming controls googleMap.getUiSettings().setZoomControlsEnabled(true); // Enable / Disable my location button googleMap.getUiSettings().setMyLocationButtonEnabled(true); // Enable / Disable Compass icon googleMap.getUiSettings().setCompassEnabled(true); // Enable / Disable Rotate gesture googleMap.getUiSettings().setRotateGesturesEnabled(true); // Enable / Disable zooming functionality googleMap.getUiSettings().setZoomGesturesEnabled(true); final float latitude = Float.parseFloat(mEnderecoModel.get(j).getLatitude()); final float longitude = Float.parseFloat(mEnderecoModel.get(j).getLongitude()); coordList.add(new LatLng(latitude, longitude)); googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 10)); // Initialize the manager with the context and the map. // (Activity extends context, so we can pass 'this' in the constructor.) mClusterManager = new ClusterManager<MyItem>(this, googleMap); // Point the map's listeners at the listeners implemented by the cluster // manager. googleMap.setOnCameraChangeListener(mClusterManager); googleMap.setOnMarkerClickListener(mClusterManager); addItems(coordList); googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(final Marker marker) { LatLng pos = marker.getPosition(); int arryListPosition = getArrayListPosition(pos); return true; } }); } } } catch (Exception e) { e.printStackTrace(); } } private int getArrayListPosition(LatLng pos) { for (int i = 0; i < mEnderecoModel.size(); i++) { if (pos.latitude == Double.parseDouble(mEnderecoModel.get(i).getLatitude().split(",")[0])) { if (pos.longitude == Double.parseDouble(mEnderecoModel.get(i).getLongitude().split(",")[1])) return i; } } return 0; } private void addItems(List<LatLng> markers) { for (int i = 0; i < markers.size(); i++) { MyItem offsetItem = new MyItem(markers.get(i)); mClusterManager.addItem(offsetItem); } } private void initilizeMap() { if (googleMap == null) { googleMap = ((MapFragment) getFragmentManager().findFragmentById( R.id.map)).getMap(); // check if map is created successfully or not if (googleMap == null) { Toast.makeText(getApplicationContext(), "Não foi possível carregar o mapa", Toast.LENGTH_SHORT) .show(); } } } @Override protected void onResume() { super.onResume(); initilizeMap(); } }
- DefaultClusterRenderer getMarker () devuelve null cuando se hace zoom
- Cómo configurar mi propio icono de marcadores en clúster en Google Maps
- Cómo actualizar marcadores en el mapa cuando se utiliza ClusterManager
- Marcadores de clúster superpuestos por el icono de ubicación actual del usuario en Android
- Utilidad de Google Maps: cómo obtener todos los marcadores de ClusterManager <?>?
- ClusterManager en GoogleMap android
- Mostrar la información personalizada de InfoWindow para Android Maps Utility Library for Android
- Cómo agregar la ventana de información para el marcador de clustering en android?
- Cómo mostrar InfoWindow con Android Maps Utility Library para Android
- ¿Cómo agregar título, fragmento e icono a ClusterItem?
- Refreshing makers (ClusterItems) en Google Maps v2 para Android
- La adición de nuevos marcadores en el mapa utilizando el gestor de clúster no refleja los cambios hasta que haga zoom y aleje el mapa
- Maps de Android ClusteredMarkers - no muestran unclustered?
No está seguro de cómo está inicializando sus Markers
porque no muestra esa parte del código pero poner un título en él se hace de esta manera:
//You need a reference to a GoogleMap object GoogleMap map = ... // get a map. Marker marker = map.addMarker(new MarkerOptions() .position(new LatLng(37.7750, 122.4183)) //Or whatever coordinate .title("Your title") .snippet("Extra info"));
Y eso es todo, al hacer clic en él verá la información de ese marcador.
Puede encontrar más información aquí
EDITAR
Para el ClusterManager
creo que puede encontrar esta respuesta útil