Yandex Maps API:添加多个地标

时间:2019-07-15 06:51:17

标签: javascript yandex-maps

我了解如何创建一个地标,并且如果需要创建多个地标,我可以这样做:

ymaps.ready(init);

function init() {   

  var map = new ymaps.Map('map', {
    center: [55.76, 37.64], // lat, long
    zoom: 5,
    controls: ['zoomControl', 'fullscreenControl']
  });

  var data = [
    {
      name: 'Moskow',
      coordinates: [55.684758, 37.738521]
    },
    {
      name: 'Saint Petersburg',
      coordinates: [59.939095, 30.315868]
    },
  ];

  for (var i = 0; i < data.length; i++) {
    map.geoObjects.add(new ymaps.Placemark([data[i]['coordinates'][0], data[i]['coordinates'][1]], {
        balloonContent: data[i]['name']
    }));
  }

}

但是,有没有更好的方法可以在不循环的情况下将大量数据添加到地图?

1 个答案:

答案 0 :(得分:0)

是的,使用对象管理器并将数据组织到对象集合中。 Yandex Maps API为这种情况提供了便捷的方法。

以下是根据您的数据得出的简单示例:

ymaps.ready(init);

function init() {

  var map = new ymaps.Map('map', {
    center: [55.76, 37.64], // lat, long
    zoom: 5,
    controls: ['zoomControl', 'fullscreenControl']
  });

  // Objects collection
  var collection = {
    type: "FeatureCollection",
    features: [
      {
        type: "Feature",
        id: 0,
        geometry: {
          type: "Point",
          coordinates: [55.684758, 37.738521]
        },
        properties: {
          balloonContent: "Moskow"
        }
      },
      {
        type: "Feature",
        id: 1,
        geometry: {
          type: "Point",
          coordinates: [59.939095, 30.315868]
        },
        properties: {
          balloonContent: "Saint Petersburg"
        }
      }
    ]
  };

  // Object Manager
  objectManager = new ymaps.ObjectManager({ clusterize: true });
  objectManager.add(collection);

  map.geoObjects.add(objectManager);

}

了解有关Object Manager的信息。在那里,您可以找到更多示例。