Клуб API Карт

Определить метки в видимой части карты

Пост в архиве.

Доброго времени! Прошу помощи, сам не могу сообразить. В документации есть два примера:

 

var geoObjects clusterer.getGeoObjects(),
    shownObjectsCounter 0;
for (var 0geoObjects.lengthli++{
    if (clusterer.getObjectState(geoObjects[i]).isShown{
        shownObjectsCounter++;
    }
}
alert('Сейчас на карте показаны ' shownObjectsCounter ' меток из ' geoObjects.length '.');

 

и

 

  myMap.events.add('boundschange'function ({


});

 

Собственно вопрос, как мне совместить работу этих двух примеров. Мне надо получать от всех меток в видимой части карты их уникальный параметр и передавать его стороннему скриту, чтобы он выводил соответствующее содержание при перемещении карты, при зарузке карты и тд. Подскажите, как это сделать?

 

 myMap.events.add('boundschange'function ({
     var geoObjects clusterer.getGeoObjects(),
    shownObjectsCounter 0;
for (var 0geoObjects.getLength()li++{
    if (clusterer.getObjectState(geoObjects[i]).isShown{
        shownObjectsCounter++;
       alert(geoObjects[i].properties.get("placeid"));
    }
}
alert('Сейчас на карте показаны ' shownObjectsCounter ' меток из ' geoObjects.getLength('.');
});

 

8 комментариев

а что пишет консоль ошибок?

лучше давать ссылку на страницу или выкладывать пример на jsfiddle.net

 

Yandex Maps JS API ymaps2_1_9(util.dom.svgIconBuilder): Can not convert style to image(, An attempt was made to break through the security policy of the user agent., ) ?load=package.full&lang=ru_RU&mode=debug:818

Yandex Maps JS API ymaps2_1_9(util.dom.svgIconBuilder): Can not convert style to image(, An attempt was made to break through the security policy of the user agent., ) ?load=package.full&lang=ru_RU&mode=debug:818

Uncaught TypeError: Cannot read property 'clusterObject' of undefined combine.xml?modules=2!(03z0g)n)I22(X(3)x)e-D3J)F)C(!2)(j)s26(Z2(2W)N.e)5(.)…w)y)G)L)O)R)S)T)U)V)W)X)Y)0)2)3)7)8)$)_).)!)*)())),)q)z)Q)J)Z,a,b,h,i:9532

 

 

Ссылку дать не могу - проект в ограниченном доступе, только в индивидуальном порядке, если вы хотите помочь.

Дима передал мне вашу проблему, спасибо за сообщение, нашелся баг в кластеризаторе, из-за которого неверно обновлялись данные о состоянии объекта после смены зума.

Мы это починим и выкатим фикс в будущем релизе.

Пока для отладки можете использовать вот такой хак

map.events.add('boundschange', function () {

                    var geoObjects = cluster.getGeoObjects();

                    cluster.removeAll();

                    cluster.add(geoObjects);

                    .....

 

При таком варианте состояния объектов возвращаются без ошибок, а после выхода релиза нужно будет просто убрать эти две строчки

Благодарю за быструю помощь! Удачи в работе!

http://www.mariholod.com/dilerslist/ мы заработали, только появилась такая беда, на карте при открытии балуна, если его содержимое не умещается на карту, карта смещается, чтобы вместить содержимое и балун закрывается, очень неудобно, жалуются, что с этим можно сделать?

 

и второй вопрос при использовании myMap.setBounds(clusterer.getBounds()); если в результатах всего одна метка, карта отображается в таком масштабе, что карты то и нет для него, как это можно поправить? по ссылке можно посмотреть пример, введите в форме справа, например, "Йошкар-Ола" (http://www.mariholod.com/dilerslist/?dillersearchname=&dillersearchadress=%C9%EE%F8%EA%E0%F0-%CE%EB%E0&diler=on&inetmag=on&dsearch=sch)

1. можно отключить автопозиционирование балуна

clusterer.options.set({

    geoObjectBalloonAutoPan: false,

    clusterBalloonAutoPan: false

})

 

2. Выставляйте флаг checkZoomRange: true

 

myMap.setBounds(clusterer.getBounds(), { checkZoomRange: true });

Большое спасибо!;-)