Ответ 1
Используйте GMap2.getBounds()
, чтобы найти ограничительную рамку. Использование GLatLngBounds.containsLatLng()
для проверки каждого маркера, чтобы увидеть, видно ли это.
Вот несколько моментов:
Итак, как получить список всех видимых маркеров на текущем уровне масштабирования? Я искал в Интернете и не нашел ничего полезного. Какой-то то, чего я пытаюсь достичь, можно найти здесь
Используйте GMap2.getBounds()
, чтобы найти ограничительную рамку. Использование GLatLngBounds.containsLatLng()
для проверки каждого маркера, чтобы увидеть, видно ли это.
В Google Maps JavaScript API V3 мы можем использовать что-то вроде этого:
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]
}
}
Я знаю, что вы хотели API V2, но мне пришлось исправить некоторые вещи, которые я видел в ответе @bruha для V3, в случае, если кто-то ищет его:
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
}
}
идущий назад через массив, этот путь проходит через массив маркеров быстрее, плюс мы устанавливаем границы в переменную перед тем, как идти в цикл, поэтому мы не запрашиваем его каждый раз, когда мы проходим через цикл, и единственный запрос мы должны сделать это, если конкретный маркер лежит внутри границ.
EDIT: goofed мой декрементер
EDIT: map.getBounds() должен быть, был map.getBounds
Это простой код. Попробуйте этот код.
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;
}
Мой фрагмент кода
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;
}