Добрый день!
В примере при нажатии на кнопку создается карта, при повторном нажатии удаляется. И если еще раз нажать "показать на карте", то карта снова создается. Так как в бесплатной версии есть только 25000 запросов, то хочется их поэкономить. Как сделать одно обращение к api с одной страницы или кэшировать запрос?
<!DOCTYPE html>
<html>
<head>
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script>
<script src="http://yandex.st/jquery/1.9.0/jquery.min.js"></script>
<script>
ymaps.ready(initmap);
function initmap(){
var myMap;
$('#toggle').bind({
click: function () {
$("#map").css('display', '');
if (!myMap) {
ymaps.geocode('Краснодар, Адыгейская Набережная, 71', {
results: 1
}).then(function (res) {
myMap = new ymaps.Map("map", {
center: res.geoObjects.get(0).geometry.getCoordinates(),
zoom: 14,
});
var firstGeoObject = res.geoObjects.get(0), // Выбираем первый результат геокодирования
coords = firstGeoObject.geometry.getCoordinates(), // Координаты геообъекта
bounds = firstGeoObject.properties.get('boundedBy'); // Область видимости геообъекта
// Добавляем первый найденный геообъект на карту
myMap.geoObjects.add(firstGeoObject);
// Масштабируем карту на область видимости геообъекта
myMap.setBounds(bounds, {
checkZoomRange: true // проверка наличия тайлов на данном масштабе
});
});
$("#toggle").attr('value', 'Скрыть карту');
} else {
myMap.destroy();
myMap = null;
$("#toggle").attr('value', 'Показать на карте');
$("#map").css('display', 'none');
}
}
});
}
</script>
</head>
<body>
<div id="page">
<div><div class="valadv">Адыгейская Набережная, 71 <input type="button" value="Показать на карте" id="toggle"/></div></div>
<div id="map" style="width:100%;height:400px;margin:20px 0;display:none"></div>
</div>
</body></html>