Добавление кнопки на карту
Класс control.Button позволяет создавать кнопки и добавлять их на карту через control.Manager.
Кнопка может принимать 3 вида в зависимости от размера карты и количества других элементов управления на карте. На карте маленького размера в кнопке показываться только иконка, на средней карте показывается только текст, на карте большого размера показывается иконка с текстом. Вы можете зафиксировать кнопку в любом размере или задать только иконку или только текст.
У кнопки по умолчанию выставлена максимальная ширина в 90 пикселей. Если ваша кнопка содержит длинный текст, следует задать ей нужный максимальный размер через опцию maxWidth.
index.html
button.js
<!DOCTYPE html>
<html>
<head>
<title>Добавление кнопки на карту</title>
<meta
http-equiv="Content-Type"
content="text/html; charset=utf-8"
/>
<!--
Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
-->
<script
src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=<ваш API-ключ>"
type="text/javascript"
></script>
<script src="button.js" type="text/javascript"></script>
<style>
html,
body,
#map {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
</style>
</head>
<body>
<div id="map"></div>
</body>
</html>
ymaps.ready(init);
function init() {
var map = new ymaps.Map("map", {
center: [59.93772, 30.313622],
zoom: 10,
controls: [],
}),
firstButton = new ymaps.control.Button("Кнопка");
map.controls.add(firstButton, { float: "right" });
var secondButton = new ymaps.control.Button({
data: {
// Зададим текст и иконку для кнопки.
content: "Адаптивная кнопка",
// Иконка имеет размер 16х16 пикселей.
image: "error.svg",
},
options: {
// Поскольку кнопка будет менять вид в зависимости от размера карты,
// зададим ей три разных значения maxWidth в массиве.
maxWidth: [28, 150, 178],
},
});
map.controls.add(secondButton);
// Будем искусственно переключать размеры кнопки каждую секунду, чтобы показать все варианты
// внешнего вида кнопки.
// При изменении размера карты эти перестроения будут происходить автоматически.
function changeSize() {
var oldSize = secondButton.options.get("size"),
newSize;
switch (oldSize) {
case "small":
newSize = "medium";
break;
case "medium":
newSize = "large";
break;
case "large":
newSize = "small";
break;
default:
newSize = "small";
}
secondButton.options.set("size", newSize);
}
window.setInterval(changeSize, 1000);
}