multiple marcadores icon google example custom añadir google-maps google-maps-markers
here

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:

  1. 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.
  2. Todos los marcadores se almacenan en una matriz.
  3. 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.