- Как изменить балун на карте яндекса?
- Hideicononballoonopen false не работает
- Не работает setCenter Яндекс карты
- Ответы (1 шт):
- Обработчик кнопки в Placemark.balloon #226
- Comments
- KainWhite commented Apr 25, 2020 •
- Вопрос
- Создание обработчика:
- Компонент SomeMap
- Класс PlacemarkBalloon
- mmarkelov commented Apr 25, 2020
- KainWhite commented Apr 26, 2020
- Инициализация карты
- UserPlacemark
- mmarkelov commented Apr 26, 2020
- KainWhite commented Apr 26, 2020 •
- Вопрос
Как изменить балун на карте яндекса?
Добрый день, есть такая конструкция
каким образом тут можно изменить балун на свою картинку ? я немного не понял как можно применить сюда примеры из доков
- Вопрос задан более трёх лет назад
- 7947 просмотров
в общем мне никто так и не помог и не объяснил , потратил день и разобрался сам , если кому то будет интересно то именно для такой конструкции необходимо использовать метод setOptions объекта geoQueryResult api.yandex.ru/maps/doc/jsapi/2.1-dev/ref/reference.
а вот что нужно добавить именно в эту конструкцию чтобы все заработало
.setOptions( <
iconLayout: ‘default#image’,
iconImageHref: ‘main/red_marker.png’,
iconImageSize: [20, 35],
iconImageOffset: [-3, -42],
balloonContentHeader: ‘Тестовый заголовок’,
balloonContentBody: ‘Тестовый контент ‘
>)
я так понимаю что мне достаточно этого куска кода ?
ymaps.ready(function () <
ymaps.option.presetStorage.add(‘custom#default’, <
iconLayout: ‘default#image’,
iconImageHref: ‘marker.png’,
iconImageSize: [30, 40],
iconImageOffset: [-15, -40],
iconImageClipRect: [
[0, 30],
[30, 70]
],
hideIconOnBalloonOpen: false
>);
ymaps.option.presetStorage.add(‘custom#active’, <
iconLayout: ‘default#image’,
iconImageHref: ‘marker.png’,
iconImageSize: [30, 40],
iconImageOffset: [-15, -40],
iconImageClipRect: [
[0, 70],
[30, 110]
],
hideIconOnBalloonOpen: false
>);
@QTnub вы для начала определитесь, какую версию подключаете. Мой код предназначен для 2.1. А вы приводите ссылки на 2.0. Понимаете разницу?
да , позже я обратил внимание , но суть не в этом, я не пойму как мне это применить в этом примере , точки у меня формируются так
massive_adres.each(function(i) <
var objects = ymaps.geoQuery(ymaps.geocode($(this).text()))
куда это тут вставить ? как в примере сделать у меня получилось , а как тут не разберусь никак , тут я так понимаю это точка на карте .addToMap(myMap); вот и как ей прописать картинку для балуна, я пробовал добавлять что то типа
Источник
Hideicononballoonopen false не работает
Предыстория проблемы: со своими css-стилями сверстали макет балуна, создали на его основе layout и заменили им у геообъекта balloonContentLayout.
Отлично, балун отображается как надо, НО в левом верхнем уголке под ним стандартный балун.
Пробовал заменять balloonContentHeaderLayout на пустой лэйаут, на null, ставить closeButton:false — никакой реакции
Вопрос — как от этого недоразумения избавиться?
self.geoObject = new ymaps.GeoObject( <
geometry: <
type: \»Point\»,
coordinates: [data.coordinates.split(‘,’)[0], data.coordinates.split(‘,’)[1]]
>,
properties: <
id: self.office_id,
title: self.office_title,
address: self.office_data.address
>
>, <
balloonContentLayout: ymaps.templateLayoutFactory.createClass(
self.balloonTemplate
),
offset: [0, 0], //Не работает почему-то
balloonContentHeaderLayou t:ymaps.templateLayoutFac tory.createClass(
»
),
closeButton: false, //Не работает
iconLayout: ymaps.templateLayoutFactory.createClass(
‘ ‘
),
iconOffset: [0, 0], //Не работает почему-то
hideIconOnBalloonOpen: false,
hintHideTimeout: 0
>);
Предыстория проблемы: со своими css-стилями сверстали макет балуна, создали на его основе layout и заменили им у геообъекта balloonContentLayout.
Отлично, балун отображается как надо, НО в левом верхнем уголке под ним стандартный балун.
Пробовал заменять balloonContentHeaderLayout на пустой лэйаут, на null, ставить closeButton:false — никакой реакции
Вопрос — как от этого недоразумения избавиться?
self.geoObject = new ymaps.GeoObject( <
geometry: <
type: «Point»,
coordinates: [data.coordinates.split(‘,’)[0], data.coordinates.split(‘,’)[1]]
>,
properties: <
id: self.office_id,
title: self.office_title,
address: self.office_data.address
>
>, <
balloonContentLayout: ymaps.templateLayoutFactory.createClass(
self.balloonTemplate
),
offset: [0, 0], //Не работает почему-то
balloonContentHeaderLayou t:ymaps.templateLayoutFac tory.createClass(
»
),
closeButton: false, //Не работает
iconLayout: ymaps.templateLayoutFactory.createClass(
‘ ‘
),
iconOffset: [0, 0], //Не работает почему-то
hideIconOnBalloonOpen: false,
hintHideTimeout: 0
>);
Предыстория проблемы: со своими css-стилями сверстали макет балуна, создали на его основе layout и заменили им у геообъекта balloonContentLayout.
Отлично, балун отображается как надо, НО в левом верхнем уголке под ним стандартный балун.
Пробовал заменять balloonContentHeaderLayout на пустой лэйаут, на null, ставить closeButton:false — никакой реакции
Вопрос — как от этого недоразумения избавиться?
self.geoObject = new ymaps.GeoObject( <
geometry: <
type: \»Point\»,
coordinates: [data.coordinates.split(‘,’)[0], data.coordinates.split(‘,’)[1]]
>,
properties: <
id: self.office_id,
title: self.office_title,
address: self.office_data.address
>
>, <
balloonContentLayout: ymaps.templateLayoutFactory.createClass(
self.balloonTemplate
),
offset: [0, 0], //Не работает почему-то
balloonContentHeaderLayou t:ymaps.templateLayoutFac tory.createClass(
»
),
closeButton: false, //Не работает
iconLayout: ymaps.templateLayoutFactory.createClass(
‘ ‘
),
iconOffset: [0, 0], //Не работает почему-то
hideIconOnBalloonOpen: false,
hintHideTimeout: 0
>);
Предыстория проблемы: со своими css-стилями сверстали макет балуна, создали на его основе layout и заменили им у геообъекта balloonContentLayout.
Отлично, балун отображается как надо, НО в левом верхнем уголке под ним стандартный балун.
Пробовал заменять balloonContentHeaderLayout на пустой лэйаут, на null, ставить closeButton:false — никакой реакции
Вопрос — как от этого недоразумения избавиться?
self.geoObject = new ymaps.GeoObject( <
geometry: <
type: «Point»,
coordinates: [data.coordinates.split(‘,’)[0], data.coordinates.split(‘,’)[1]]
>,
properties: <
id: self.office_id,
title: self.office_title,
address: self.office_data.address
>
>, <
balloonContentLayout: ymaps.templateLayoutFactory.createClass(
self.balloonTemplate
),
offset: [0, 0], //Не работает почему-то
balloonContentHeaderLayou t:ymaps.templateLayoutFac tory.createClass(
»
),
closeButton: false, //Не работает
iconLayout: ymaps.templateLayoutFactory.createClass(
‘ ‘
),
iconOffset: [0, 0], //Не работает почему-то
hideIconOnBalloonOpen: false,
hintHideTimeout: 0
>);
«,»contentType»:»text/html»>,»authorId»:»193731676″,»slug»:»34402″,»canEdit»:false,»canComment»:false,»isBanned»:false,»canPublish»:false,»viewType»:»old»,»isDraft»:false,»isOnModeration»:false,»isSubscriber»:false,»commentsCount»:3,»modificationDate»:»Sun Dec 16 2012 11:04:00 GMT+0400 (Moscow Standard Time)»,»showPreview»:true,»approvedPreview»:<"source":"
Предыстория проблемы: со своими css-стилями сверстали макет балуна, создали на его основе layout и заменили им у геообъекта balloonContentLayout.
Отлично, балун отображается как надо, НО в левом верхнем уголке под ним стандартный балун.
Пробовал заменять balloonContentHeaderLayout на пустой лэйаут, на null, ставить closeButton:false — никакой реакции
Вопрос — как от этого недоразумения избавиться?
self.geoObject = new ymaps.GeoObject( <
geometry: <
type: «Point»,
coordinates: [data.coordinates.split(‘,’)[0], data.coordinates.split(‘,’)[1]]
>,
properties: <
id: self.office_id,
title: self.office_title,
address: self.office_data.address
>
>, <
balloonContentLayout: ymaps.templateLayoutFactory.createClass(
self.balloonTemplate
),
offset: [0, 0], //Не работает почему-то
balloonContentHeaderLayou t:ymaps.templateLayoutFac tory.createClass(
»
),
closeButton: false, //Не работает
iconLayout: ymaps.templateLayoutFactory.createClass(
‘ ‘
),
iconOffset: [0, 0], //Не работает почему-то
hideIconOnBalloonOpen: false,
hintHideTimeout: 0
>);
Предыстория проблемы: со своими css-стилями сверстали макет балуна, создали на его основе layout и заменили им у геообъекта balloonContentLayout.
Отлично, балун отображается как надо, НО в левом верхнем уголке под ним стандартный балун.
Пробовал заменять balloonContentHeaderLayout на пустой лэйаут, на null, ставить closeButton:false — никакой реакции
Вопрос — как от этого недоразумения избавиться?
Предыстория проблемы: со своими css-стилями сверстали макет балуна, создали на его основе layout и заменили им у геообъекта balloonContentLayout.
Отлично, балун отображается как надо, НО в левом верхнем уголке под ним стандартный балун.
Пробовал заменять balloonContentHeaderLayout на пустой лэйаут, на null, ставить closeButton:false — никакой реакции
Вопрос — как от этого недоразумения избавиться?
self.geoObject = new ymaps.GeoObject( <
geometry: <
type: «Point»,
coordinates: [data.coordinates.split(‘,’)[0], data.coordinates.split(‘,’)[1]]
>,
properties: <
id: self.office_id,
title: self.office_title,
address: self.office_data.address
>
>, <
balloonContentLayout: ymaps.templateLayoutFactory.createClass(
self.balloonTemplate
),
offset: [0, 0], //Не работает почему-то
balloonContentHeaderLayou t:ymaps.templateLayoutFac tory.createClass(
»
),
closeButton: false, //Не работает
iconLayout: ymaps.templateLayoutFactory.createClass(
‘ ‘
),
iconOffset: [0, 0], //Не работает почему-то
hideIconOnBalloonOpen: false,
hintHideTimeout: 0
>);
Предыстория проблемы: со своими css-стилями сверстали макет балуна, создали на его основе layout и заменили им у геообъекта balloonContentLayout.
Отлично, балун отображается как надо, НО в левом верхнем уголке под ним стандартный балун.
Пробовал заменять balloonContentHeaderLayout на пустой лэйаут, на null, ставить closeButton:false — никакой реакции
Вопрос — как от этого недоразумения избавиться?
Источник
Не работает setCenter Яндекс карты
Дано: на странице есть карта с несколькими маркерами. Есть список ссылок с координатами этих маркеров, по клику отрабатывает onclick=changeCenter(x,y)
переменные x и y передаются нормально, функция их съедает. Но карта тупо сбрасывается и ничего не происходит. Функцию подключил сразу после init карты. Кто подскажет в чем беда? Так мало примеров setCenter в интернете. Допускаю что просто я не очень сообразительный)
на всякий добавлю инициализацию карты, может там что накосячил. Для пробы пока только с одной точкой пытаюсь разобраться
Ответы (1 шт):
Метод setCenter — устанавливает центр и коэффициент масштабирования карты. Центр задается в географических координатах. Возвращает ссылку на себя.
Ваша функция выглядит следующим образом:
В документации яндекса к методу setCenter написано следующее:
Нас интересует первый параметр:
Параметр: center (обязательное для заполнения поле)
Значение по умолчанию: нет
Тип: Number[]
Описание: Геокоординаты центра карты
Откуда следует, что в метод нужно передавать массив из двух чисел (чтобы это был массив — нужны квадратные скобки [x, y] ). Думаю в этом и заключается причина сброса карты (некорректная работа, которая не ожидалась).
Касаемо Placemark и Map , там где вы передаете строки, что-то мне подсказывает, что туда нужно передавать не строки в виде [«x», «y»] , а координаты в формате чисел (кстати тут указали верно — массив, но вот только строк).
Несколько примеров из документации, по использованию методов.
Инициализация карты из известных центра и уровня масштабирования:
Из примеров видно, что значения координаты метки передаются в виде массива двух чисел: [40, 50] , [48, 40] и [55.74954, 37.621587] . Поэтому меняйте ваши [«x», «y»] — строки на числа, а в метод setCenter — передавайте массив.
Источник
Обработчик кнопки в Placemark.balloon #226
Comments
KainWhite commented Apr 25, 2020 •
Вопрос
Есть ли способ создать в balloon Placemark’а кнопку с обработчиком, в котором используется this?
Создание обработчика:
Компонент SomeMap
Класс PlacemarkBalloon
Именно тут я не знаю, что написать в onclick кнопки.
The text was updated successfully, but these errors were encountered:
mmarkelov commented Apr 25, 2020
Достаточно нетривиальная задача, советую посмотреть:
#150
#130
#27
Также есть репа, в которой пытался решить данную проблему
KainWhite commented Apr 26, 2020
Попробовал использовать код из #27 и отюда, но такой UserPlacemark не получает в контекст ymaps:
Инициализация карты
UserPlacemark
По идее ymaps должен быть получен в UserPlacemark, поскольку находится внутри YMaps.
Что я делаю не так?
mmarkelov commented Apr 26, 2020
@KainWhite такой вариант работал с предыдущей версией библиотеки, Сейчас Вам стоит либо пробрасывать ymaps через пропсы, либо использовать withYMaps
KainWhite commented Apr 26, 2020 •
@mmarkelov судя по всему, использовать пропс я не мог, поскольку UserPlacemark это самописный компонент, а onload работает только с Map; поэтому получается, что оставался только withYMaps, в результате получилось что-то такое:
Однако в этом случае слетает позиционирование балуна: он отображается в правом верхнем углу карты + не закрывается после нажатия на крестик + после любого действия с картой при открытом балуне, возникает ошибка Cannot read property ‘setPosition’ of null , после которой сразу же ticking while inactive . и карта больше не отзывается.
Также нашёл вот этот материал, тут применяется ручное позиционирование, однако здесь первый параметр функции templateLayoutFactory.createClass задаёт всю разметку балуна, а в моём случае только лишь контент, в следствие чего позиционировать элемент я не могу.
Вопрос
Возможно я что-то делаю не так и есть более простой способ добиться правильного поведения (то есть балун строго над меткой, крестик его закрывает)? Или простого способа нет, но есть какие-то дополнительные настройки Placemark, которые я не заметил, и которые позволят решить проблему?
Источник