Создание карты по требованию
В данном примере создание карты происходит при нажатии кнопки "Показать карту".
Изначально на странице размещается пустой div-контейнер. С помощью функции bind() для элемента button назначается обработчик события click, вызов которого приводит к созданию карты и ее размещению в указанном контейнере.
Если при нажатии кнопки карта уже была создана, то вызывается метод destroy(), уничтожающий карту.
index.html
request_map.js
<html xmlns="http://www.w3.org/1999/xhtml">
<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="https://yandex.st/jquery/2.2.3/jquery.min.js" type="text/javascript"></script>
<script src="request_map.js" type="text/javascript"></script>
</head>
<body>
<input type="button" value="Показать карту" id="toggle"/>
<p>
<div id="map" style="width: 450px; height: 320px"></div>
</p>
</body>
</html>
// Как только будет загружен API и готов DOM, выполняем инициализацию
ymaps.ready(init);
// Инициализация и уничтожение карты при нажатии на кнопку.
function init() {
var myMap;
$("#toggle").bind({
click: function () {
if (!myMap) {
myMap = new ymaps.Map(
"map",
{
center: [55.010251, 82.958437], // Новосибирск
zoom: 9,
},
{
searchControlProvider: "yandex#search",
}
);
$("#toggle").attr("value", "Скрыть карту");
} else {
myMap.destroy(); // Деструктор карты
myMap = null;
$("#toggle").attr("value", "Показать карту снова");
}
},
});
}