makc9I
@makc9I
фрилансер, web разработчик

Что я не так делаю с формированием коллекции в ObjectManager yandex map?

Всем привет. Пытаюсь вывести список адресов на яндекс карту. Нагуглил решение 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
Я понимаю, что это я где-то туплю, но сам в упор не вижу, где.
  • Вопрос задан
  • 903 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы