Destell
@Destell
Зеленый фронтендер

Как правильнее работать с объектом данных точек для яндекс карты?

Приветствую.

Код

Возник вопрос. Хочу вывести на яндекс карту точки из коллекции данных вида "категория: название, координаты".

Объект вида
var places = {
      shops: {
         shop1: {
            name: "name 1",
            coords: [1, 2]
         },
         shop2: {
            name: "name 2",
            coords: [3, 2]
         }
      },
      schools: {
         school1: {
            name: "school 1",
            coords: [1565656, 267676]
         },
         school2: {
            name: "school 2",
            coords: [767, 565]
         }
      }
   };


Сперва для перебора использовал подобный код
spoiler
objPassage: function ($obj, $map, $collection) {
                var array = Object.values($obj);

                for (var obj of array) {
                    var cath = Object.values(obj);

                    for (var item of cath) {
                        var info = Object.values(item),
                            placemark = _mapMethods.setPlacemark(info[1], info[0]);

                        $collection.add(placemark);
                    }
                }
                $map.geoObjects.add($collection);
            }



Потом мне показалось, что три раза писать одно и то же для каждого уровня объекта (не взирая на структуру объекта) не эстетично, как минимум, и я решил использовать рекурсию по уровню.

function eachObj($obj, $lvl = 0) {
      var toArray = Object.values($obj);
      $lvl--;

      for (var item of toArray) {
         if ($lvl > 0) {
            eachObj(item, $lvl);
         } else {
            console.log(toArray[0]);
            console.log(toArray[1]);
         }
      }
   }


Какой вариант лучше и есть ли более умные решения?
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
Думаю правильнее использовать GeoJSON
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Digital Sharks Казань
от 60 000 до 65 000 руб.
CS Money Санкт-Петербург
от 120 000 до 150 000 руб.
Ingram Micro Cloud Москва
от 170 000 руб.
18 янв. 2019, в 14:12
70000 руб./в месяц
18 янв. 2019, в 13:24
500 руб./за проект
18 янв. 2019, в 13:04
12000 руб./в месяц