google maps - icon - Cómo obtener todos los marcadores visibles en el nivel de zoom actual
google.maps.marker example (5)
Aquí hay algunos puntos:
- Tengo algunos marcadores en el mapa y registros asociados en el panel derecho, además del mapa. Se conectan a través de una identificación numérica, que se almacena como una propiedad de marcador.
- Todos los marcadores se almacenan en una matriz.
- Cuando el usuario amplía el mapa, los registros, asociados a solo los marcadores visibles se deben mostrar en el panel derecho.
Entonces, ¿cómo obtener la lista de todos los marcadores visibles en el nivel de zoom actual? He buscado en Internet y no encontré algo útil. Algún tipo de lo que estoy tratando de lograr se puede encontrar here
En Google Maps JavaScript API V3 podemos usar algo como esto:
var markers; // your markers
var map; // your map
for (var i=0; i<markers.length; i++){
if( map.getBounds().contains(markers[i].getPosition()) ){
// code for showing your object, associated with markers[i]
}
}
Es un código fácil. Prueba este código
private boolean CheckVisibility(Marker marker)
{
if(googleMap != null)
{
//This is the current user-viewable region of the map
LatLngBounds latLongBounds = googleMap.getProjection().getVisibleRegion().latLngBounds;
if(latLongBounds.contains(marker.getPosition()))
//If the item is within the the bounds of the screen
return true;
else
//If the marker is off screen
return false;
}
return false;
}
Mi fragmento de código
private boolean isAnyMarkerVisible(LatLng ll) {
if(gMap != null && markersData != null) {
final LatLngBounds latLongBounds = LatLngBounds.builder().include(ll).build();
for (Store store : markersData) {
if (latLongBounds.contains(store.getLatLng())) {
return true;
}
}
}
return false;
}
Sé que querías API V2, pero tuve que corregir algunas de las cosas que vi en la respuesta de @ bruha para V3, en caso de que alguien venga a buscarlo:
var markers; // your markers
var map; // your map
for(var i = markers.length, bounds = map.getBounds(); i--;) {
if( bounds.contains(markers[i].getPosition()) ){
// code for showing your object
}
}
ir hacia atrás a través de la matriz de esta manera atraviesa la matriz de marcadores más rápido, además establecemos los límites en una variable antes de entrar en el ciclo, por lo que no lo solicitamos cada vez que pasamos por el ciclo, y la única solicitud que tenemos para make es si el marcador específico se encuentra dentro de los límites.
EDIT: goofed mi decrementador
EDITAR: map.getBounds () debería ser, was map.getBounds
Use GMap2.getBounds()
para buscar el cuadro delimitador. El uso de GLatLngBounds.containsLatLng()
para verificar cada marcador para ver si está visible.