Всем привет. Пытаюсь вывести список адресов на яндекс карту. Нагуглил решение
https://tech.yandex.ru/maps/jsbox/2.1/object_manager
Делаю похожим образом, только вместо json я формирую js объект, который, как говорит документация, так же принимается.
Вот код:
$(function() {
ymaps.ready(init);
function init(){
var addstr, myGeocoder;
var myCollection = new ymaps.GeoObjectCollection();
var objects = [];
var objectManager = new ymaps.ObjectManager({
// Чтобы метки начали кластеризоваться, выставляем опцию.
clusterize: true,
// ObjectManager принимает те же опции, что и кластеризатор.
gridSize: 32,
clusterDisableClickZoom: true
});
//парсим адрес
cities.forEach(function(item, i, arr) {
//console.log(item['city']);
addstr = item['city'].replace(/[\t\n]\s+/g, ' ').trim();
myGeocoder = ymaps.geocode(addstr);
myGeocoder.then(
function (res) {
var coords = res.geoObjects.properties.get('metaDataProperty').GeocoderResponseMetaData.Point.coordinates;
myCollection.add(new ymaps.Placemark([coords[1],coords[0]]));
objects.push({
type: 'Feature',
id: i,
geometry: {
type: 'Point',
//coordinates: [39.22,51.45]
coordinates: [coords[1],coords[0]]
},
properties: {
balloonContent: item['city'],
hintContent: item['city']
}
});
},
function (err) {
// обработка ошибки
console.error("Не удалось обработать адрес");
}
);
});
// Создание карты.
var myMap = new ymaps.Map("yamap", {
// Координаты центра карты.
// Порядок по умолчнию: «широта, долгота».
// Чтобы не определять координаты центра карты вручную,
// воспользуйтесь инструментом Определение координат.
center: [57.74, 54.70],
// Уровень масштабирования. Допустимые значения:
// от 0 (весь мир) до 19.
zoom: 6
});
var collection = {
type: 'FeatureCollection',
features: objects
};
console.log(collection);
objectManager.add(collection);
console.log(objectManager);
myMap.geoObjects.add(objectManager);
});
Самое забавное, что если в строку objectManager.add(collection); подставить вместо collection json из примера выше, то всё работает, но я в упор не вижу, где же я накосячил. Сформированный объект я вывожу через console.log, сам пример можно посмотреть здесь:
https://cher-mol.ru/o-kompanii/geografiya-prodazh.html
Я понимаю, что это я где-то туплю, но сам в упор не вижу, где.