Клуб API Карт

Как сделать одно обращение к api с одной страницы?

uenergy
9 июля 2015, 10:54

Добрый день!

В примере при нажатии на кнопку создается карта, при повторном нажатии удаляется. И если еще раз нажать "показать на карте", то карта снова создается. Так как в бесплатной версии есть только 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>

 

2 комментария

 

ymaps.geocode('Краснодар, Адыгейская Набережная, 71', {

Геокодировать на каждом клиенте одни и те же адреса каждый раз конечно плохо.

Лучше геокодировать эти адреса предварительно на своем сервере с помощью http-версии геокодера и кэшировать эти запросы на месяц.

А страницу формировать уже с конкретными координатами, взятыми из кэша, без лишних http-запросов с каждого клиента

Этот вариант не приходил в голову. Спасибо за помощь!