Клуб API Карт

Размер балуна в firefox

Пост в архиве.
cafe48ru
9 апреля 2011, 23:17

Коллеги, подскажите, по какому принципу балуну присваиваются размеры? У меня проблема в firefox 4 (в 3 все ок) - размеры меньше, чем должны быть, текст не влезает. В остальных браузерах все ок. Стили не накладываются. http://cafe48.ru/map

И еще - как можно оптимизировать показ более 150 меток, при условии что все надо показать на экране сразу?

2 комментария

Размеры вычисляются по определенному алгоритму. Видимо для FF4 при определенных условиях размеры вычисляются некорректно.

Пока могу порекомендовать использовать неразрывные пробелы, или white-space: nowrap там где не должно быть переносов.

ПО второй части вопроса: http://api.yandex.ru/maps/jsapi/doc/mod/concepts/hotspots.xml

Я бы посоветовал вам сделать вот что:

1. Использовать шаблон для содержимого балуна. Это позволит в данных для объектов не дублировать html + немножечко подправить верстку, чтобы текст влезал. К тому же внешний вид объектов будет проще менять.

2. Воспользоваться диспетчером объектов. Для начала этого должно хватить. Но в принципе вы всегда можете напилить активные области из YMapsML с помощью утилитки.

Примерно будет выглядеть так:

// Данные для ваших объектов
var data = [                                                                                                                                                                      
    {point: "39.593158,52.601993", type: "kafe", id: "13-stulev", name: "13 стульев", address: "ул. Фрунзе, 12", phone: "74-07-64"}
];

// Стиль объектов
YMaps.Styles.add("cafe48#restauraunt", {
    parentStyle: "default#restaurauntIcon",
    balloonContentStyle: {
        template: new YMaps.Template(
            '' +
                'http://cafe48.ru/$[metaDataProperty.type]/$[metaDataProperty.id]" target="_blank">$[metaDataProperty.name]' +
                '$[metaDataProperty.address]' +
                'т. $[metaDataProperty.phone]' +
            ''
        )
    }
});

// Добавляем объекты через диспетчер объектов
var objManager = new YMaps.ObjectManager();
YMaps.jQuery.each(data, function (index, item) {
    var restaurant = new YMaps.Placemark(YMaps.GeoPoint.fromString(item.point), {style : "cafe48#restauraunt"});
    restaurant.metaDataProperty = item;
    objManager.add(restaurant);
});