Клуб API Карт

В одной точке только один Placemark

kiesp-art
17 марта 2012, 14:51

Есть набор организации с гео-координатами tableOfValues.

И имеется следующий код:

var map = new YMaps.Map(document.getElementById("YMapsID"));
// временно устанавливаем центр и масштаб карты, которые будут затем заменены setBounds()
map.setCenter(new YMaps.GeoPoint(37.612344743802, 55.743157371901), 9);
map.enableScrollZoom();
var options = {
    draggable: false,
    hasBalloon: true,
    hideIcon: false,
    style: 'default#phoneIcon'
};
var tableOfValues = [[37.76543, 55.89134, 'Организация1'], [37.76543, 55.89134, 'Организация2']];
var gCollectionBounds = new YMaps.GeoCollectionBounds();
var gCollection = new YMaps.GeoObjectCollection();
for (var i=0; i < tableOfValues.length; i++) {
    gCollectionBounds.add(new YMaps.GeoPoint(tableOfValues[i][0], tableOfValues[i][1]));
    var placemark = new YMaps.Placemark(new YMaps.GeoPoint(tableOfValues[i][0], tableOfValues[i][1]), options);
    placemark.setBalloonContent('<b>'+tableOfValues[i][2]+'</b>');
    gCollection.add(placemark);
}
map.setBounds(gCollectionBounds);
map.addOverlay(gCollection);

 

В этом примере указаны две организации с однаковыми гео-координатами.

У меня два вопроса:

1) Как мне сделать, чтобы если на одну гео-точку приходится две или более организаций, показывать только первую или объединить их тексты BalloonContent? Сейчас Balloon заменяется на последнюю. Впринципе в FAQ так и написано http://clubs.ya.ru/mapsapi/replies.xml?item_no=8089#overlays-8, но я точно знаю что это можно обойти, причем можно как оставить только первую точку, а можно объединить тексты и скоро я это решение найду, но придется потратить много времени, поэтому я пишу здесь.

2) Возможно ли избавиться от gCollectionBounds, оставив только gCollection? Как мне в этом случае отцентрировать карту на наборе объектов map.setBounds(???) ?

3 комментария
Подписаться на комментарии к посту

На первый вопрос нашел временное решение. А на второй пока можно обойтись и так. Всем спасибо!

Привет! Поделись пожалуйста решением пункта 1. Тоже озадачится этой проблемой на своем сайте.

 

1) Как мне сделать, чтобы если на одну гео-точку приходится две или более организаций, показывать только первую или объединить их тексты BalloonContent?

например хранить их не в массиве а в объекте по ключу - строке координат

var tableOfValues = {"37.76543, 55.89134" : ['Организация1', 'Организация2']};

 

 

2) Возможно ли избавиться от gCollectionBounds, оставив только gCollection? Как мне в этом случае отцентрировать карту на наборе объектов map.setBounds(???) ?

нет