L
L
looker2021-12-05 13:40:52
JavaScript
looker, 2021-12-05 13:40:52

Yandex Geocoder. Map loading on click?

We take the address from the variable and build a map. I did my best -_-
How to make the map closed and what would open only when you click on the button? To save free requests to api Yandex maps.

<?php 
$ch = curl_init('https://geocode-maps.yandex.ru/1.x/?apikey=*********************-d5f35cc04120&format=json&geocode=' . urlencode($address));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
 
$res = json_decode($res, true);
$coordinates = $res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['Point']['pos'];
$coordinates = explode(' ', $coordinates);

$a = $coordinates[0];
$b = $coordinates[1];
print_r($coordinates);
$c = $b . ', ' . $a ;
?>
<!-- Создаём контейнер для карты -->
<div id="map" style="width: 600px; height: 400px"></div>
 
<!-- Создаём карту -->
<script type="text/javascript">
    // Функция ymaps.ready() будет вызвана, когда
    // загрузятся все компоненты API, а также когда будет готово DOM-дерево.
    ymaps.ready(init);
 
    function init() {
        // Создание карты.
        // https://tech.yandex.ru/maps/doc/jsapi/2.1/dg/concepts/map-docpage/
        var myMap = new ymaps.Map("map", {
            // Координаты центра карты.
            // Порядок по умолчнию: «широта, долгота».
            center: [<?php echo $c; ?>],
            // Уровень масштабирования. Допустимые значения:
            // от 0 (весь мир) до 19.
            zoom: 12,
            // Элементы управления
            // https://tech.yandex.ru/maps/doc/jsapi/2.1/dg/concepts/controls/standard-docpage/
            controls: [
 
                'zoomControl', // Ползунок масштаба
                'rulerControl', // Линейка
                'routeButtonControl', // Панель маршрутизации
                'trafficControl', // Пробки
                'typeSelector', // Переключатель слоев карты
                'fullscreenControl', // Полноэкранный режим
 
                // Поисковая строка
                new ymaps.control.SearchControl({
                    options: {
                        // вид - поисковая строка
                        size: 'large',
                        // Включим возможность искать не только топонимы, но и организации.
                        provider: 'yandex#search'
                    }
                })
 
            ]
        });
 
        // Добавление метки
        // https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Placemark-docpage/
        var myPlacemark = new ymaps.Placemark([<?php echo $c; ?>], {
            // Хинт показывается при наведении мышкой на иконку метки.
            hintContent: 'Содержимое всплывающей подсказки',
            // Балун откроется при клике по метке.
            balloonContent: 'Содержимое балуна'
        });
 
        // После того как метка была создана, добавляем её на карту.
        myMap.geoObjects.add(myPlacemark);
 
    }
</script>

Answer the question

In order to leave comments, you need to log in

2 answer(s)
A
Alexey Dubrovin, 2021-12-05
@alekcena

To save free requests to api Yandex maps.

Are you already making a request through the back?.
$ch = curl_init(' https://geocode-maps.yandex.ru/1.x/?apikey=*******... ' . urlencode($address));

A
Anton Shamanov, 2021-12-05
@SilenceOfWinter

look at the examples in the documentation of i.kart, there was definitely something like that

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question