M
M
Maxim Shadrin2018-11-10 13:16:34
Yandex maps
Maxim Shadrin, 2018-11-10 13:16:34

What am I doing wrong with the formation of the collection in the ObjectManager yandex map?

Hello. I'm trying to display a list of addresses on a Yandex map. I googled the solution https://tech.yandex.ru/maps/jsbox/2.1/object_manager
I do it in a similar way, but instead of json I form a js object, which, as the documentation says, is also accepted.
Here is the code:

$(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);
        
        
        
        });

The funny thing is that if the line objectManager.add(collection); substitute instead of collection json from the example above, then everything works, but I don’t see point-blank where I messed up. I output the generated object via console.log, the example itself can be viewed here: https://cher-mol.ru/o-kompanii/geografiya-prodazh.html
I understand that I'm stupid somewhere, but I don't point blank I see where.

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question