При использовании карты с кластеризатором общее число меток в коллекции зависит от положения карты. В приведенном ниже примере, если сразу нажать на кнопку, то будет 5 точек, а если поставить центр подальше от этих маркеров, например в Ханты-Мансийск, то при нажатии на кнопку будет 0 точек.
<!DOCTYPE html>
<html>
<head>
<title>Неправильное число маркеров</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="//api-maps.yandex.ru/2.0/?load=package.standard,package.clusters&lang=ru-RU" type="text/javascript"></script>
<script type="text/javascript">
var markers;
ymaps.ready(init);
function init () {
var myMap = new ymaps.Map("map", {
center: [54.83, 37.11],
behaviors: ['default', 'scrollZoom'],
zoom: 5
});
myMap.controls.add('zoomControl', { left: 5, top: 10 });
function generateMarkers(tlCorner, brCorner, count) {
var deltaLat = tlCorner[0] - brCorner[0],
deltaLon = brCorner[1] - tlCorner[1],
markers = [];
for(var i = 0; i < count; i++) {
var lat = brCorner[0] + Math.random()*deltaLat,
lon = tlCorner[1] + Math.random()*deltaLon;
markers.push([lat, lon]);
}
return markers;
}
markers = new ymaps.Clusterer();
//markers= new ymaps.GeoObjectCollection();
[[54.51,35.90],[55.77,37.49],[55.00,37.76],[53.87,37.08],[55.11,37.18],[57.10,39.83],[56.88,37.11],[53.87,38.81],[56.63,39.02],[54.75,36.36]].forEach(function(coords) {
var myPlacemark = new ymaps.Placemark(coords);
markers.add(myPlacemark);
});
myMap.geoObjects.add(markers);
}
function log() {
document.getElementById("logField").innerHTML = markers.getLength()
}
</script>
</head>
<body>
<div id="map" style="width:400px; height:300px"></div>
<button onclick="log();">Сколько точек на карте?</button>
<span id="logField"></span><span> точек на карте</span>
</body>
</html>
Кроме того, итератор по коллекции также не возвращает маркеры, если они далеко от центра карты. Если не использовать кластеризатор, то возвращается всегда верное число. Есть ли какой-нибудь способ узнать общее число маркеров и получить к ним доступ вне зависимости от их положения относительно центра? Или это баг?