我了解如何创建单个地标,如果我需要创建多个地标,我会这样做:
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']
}));
}
}
但是有没有更好的方法可以在没有周期的情况下将一堆数据添加到地图中?
是的,使用对象管理器并将数据组织到对象集合中。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);
}
阅读有关对象管理器的信息。在那里你可以找到更多的例子。