Клуб API Карт

Растягивается высота метки на все окно карты в браузере Internet Explorer

Пост в архиве.

Растягивается высота метки на все окно карты в браузере Internet Explore, в 6 и 9 версиях точно, в остальных не проверяли, в хроме нормально. Используем "Мои Карты"

 

    <script type="text/javascript">

        ymaps.ready(function () {

 

            // Создание экземпляра карты

            var map = new ymaps.Map('map', {

                center: [56.071,92.94],

                zoom: 12

            });

 

            map.controls

                // Добавление кнопки изменения масштаба

                .add('zoomControl')

                // Линейка масштаба

                .add('mapTools');

 

            // Загрузка YMapsML-файла

            ymaps.geoXml.load("http://maps.yandex.ru/export/usermaps/QwlY1wI3fJtBIEjuiOVJFHjoPex-AQel/").then(

                function (res) {

                    // Установка границ карты по границам области содержащей все объекты из YMapsML.

                    var bounds = res.mapState && res.mapState.getBounds();

 

                    bounds && map.setBounds(bounds);

 

                    // Изменение стилей меток на DotIcon

                    // Список всех доспутных стилей можно найти в документации

                    // http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/option.presetStorage.xml

                    res.geoObjects.each(function (item, index) {

                        var preset = item.options.get('preset')

                            .replace('default', 'twirl')

                            // .replace('Point', 'DotIcon');

                            .replace('Point', 'StretchyIcon');

 

                        item.options

                            .set('preset', preset);

 

                        item.properties

                            .set('metaDataProperty.AnyMetaData.number', item.properties.get('name'));

                    });

                    map.geoObjects.add(res.geoObjects);

                },

                // Вызывается в случае неудачной загрузки YMapsML-файла

                function (error) {

                    alert("При загрузке YMapsML-файла произошла ошибка: " + error);

                }

            );

        });

    </script>

 

 

 Может кто встречался с проблемой?

 

12 комментариев
Владислав Турман
28 января 2016, 02:36

А можете дать ссылку ?

Возможно вся соль тут:  

var preset = item.options.get('preset')

                            .replace('default', 'twirl')

                            // .replace('Point', 'DotIcon');

                            .replace('Point', 'StretchyIcon')

Пробовала iconMaxHeight (Максимальная высота иконки с содержимым)

stroke (Наличие обводки фигуры.)

и еще много чего, почему то это не срабатывает, как правильно написать?

пишу например

  .replace('iconMaxHeight', [20])

нет изменений

Владислав Турман
28 января 2016, 02:36

По проблеме, не обязательно брать пресет точки, заменят ьв нем два слова и присваивать новый пресет. Можно просто написать

 item.options.set('preset', 'twirl#whiteStretchyIcon');

и сразу присвоить необходимый пресет.


а еще у вас везде в коде вылезают php переменные (например там, где подгружаются скрипты голосовалки и jquery). 

Разработчики написали, что дело может быть в css стилях сайта, я пробовала вствлять карту на "чистую" страницу без лишних css и php, не помогло.

 

Я правильно поняла, что item.options.set('preset', 'twirl#whiteStretchyIcon'); это просто совет, как лучше написать, и данная конструкция проблемы не решит?

 

Владислав Турман
28 января 2016, 02:36

не решит. просто немного сократит код и сделает его более прозрачным.

 

действительно, я не понимаю почему так. на моем компе ие 9 через раз такую фигню показал. надо бы в песочнице проверить.

1) пропишите корректный doctype
2) res.geoObjects.each(function … — не обязательно перебирать каждую метку, можете установить свойство на всю коллекцию:


res.geoObjects.options.set("preset", "twirl#whiteStretchyIcon")

В том то и дело, что я ничего не прописывала, просто взяла кусок кода из примера и вставила свои координаты, поэтому что такое doctype я не знаю, когда смотрела документацию, тоже ничего такого не припоминаю.

И где прописать res.geoObjects.options.set("preset", "twirl#whiteStretchyIcon") я тоже не знаю, но я так думаю, это не источник проблемы...

проблема в том, что не прописан doctype и IE показывает страницу в Quirks Mode.
Нужно в самом начале страницы (html) написать строчку


А ларчик то просто открывался! А я всю документацию по картам проштудировала.

Всем спасибо за ответы!

Заодно еще пара проблем с версткой решилась, а я раньше не обращала внимания на такую важную мелочь.

зато с API поближе познакомились :)
успехов!