Voici quelques points:
Alors, comment obtenir la liste de tous les marqueurs visibles sur le niveau de zoom actuel? J'ai cherché sur Internet et n'ai rien trouvé d'utile. On pourrait trouver une sorte de ce que j'essaie de réaliser ici
Utilisez GMap2.getBounds()
pour trouver le cadre de sélection. Utilisez GLatLngBounds.containsLatLng()
pour vérifier chaque marqueur afin de voir s’il est visible.
Dans Google Maps JavaScript API V3, nous pouvons utiliser quelque chose comme ceci:
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]
}
}
Je sais que vous vouliez une API V2, mais je devais corriger certaines choses que j'avais vues dans la réponse de @ bruha à la V3, au cas où quelqu'un les chercherait:
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
}
}
revenir en arrière dans le tableau de cette façon permet de parcourir plus rapidement le tableau de marqueurs. De plus, nous définissons les limites dans une variable avant de passer à la boucle. make est si le marqueur spécifique est à l’intérieur des limites.
EDIT: gaffe mon décrémenteur
EDIT: map.getBounds () devrait être, était map.getBounds
C'est un code facile. Essayez ce code.
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;
}
Mon extrait de code
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;
}