Нужно вывести информацию о компании, например - на каком этаже здания находится компания. Использовать функцию findOrganization ()

Рейтинг: 0Ответов: 1Опубликовано: 21.03.2023

Пытался по-разному написать код для вывода информации из Яндекс. Карта, но как не писал, результата не было. Нужно использовать функцию findOrganization ()

<!DOCTYPE html>
<html>
<head>
    <title>Карта Яндекс</title>
    <meta charset="utf-8">
    <script src="https://api-maps.yandex.ru/2.1/?apikey=api&lang=ru_RU" type="text/javascript"></script>
    <style>
        #map {
            width: 600px;
            height: 400px;
        }
        #info {
            margin-top: 20px;
        }
    </style>
</head>
<body>
    <div id="map"></div>
    <div id="info"></div>
    <script>
        const apiKey = ""; 
        const organizationId = "1186386819"; // ID организации

        ymaps.ready(function() {
            var myMap = new ymaps.Map(document.getElementById("map"), {
                center: [55, 38], // центр карты (Москва)
                zoom: 14 // масштаб карты
            });

            ymaps.geocode('Москва', { results: 1 }).then(function(res) {
                // Получаем первый результат геокодирования
                var firstGeoObject = res.geoObjects.get(0);

                // Задаем геобъекту свойства и опции
                firstGeoObject.properties.set({
                    iconContent: 'Москва',
                    balloonContent: 'Столица России'
                });

                // Добавляем геообъект на карту
                myMap.geoObjects.add(firstGeoObject);
            });

            ymaps.findOrganization(organizationId).then(
                function (orgGeoObject) {
                    console.log(orgGeoObject);
                    myMap.geoObjects.add(orgGeoObject);
                    myMap.setBounds(orgGeoObject.geometry.getBounds());
                },
                function (err) {
                    console.log(err);
                }
            );

            ymaps.vow
                .require([
                    "search",
                    "geocode"
                ])
                .spread(function (search, geocode) {
                    search(apiKey, `ID ${organizationId}`, {
                        type: "biz"
                    })
                    .then(function (res) {
                        const features = res.features;

                        if (features.length) {
                            const object = features[0];
                            const id = object.properties.id;
                            const name = object.properties.name;
                            const address = object.properties.address;
                            const phone = object.properties.CompanyMetaData.Phones[0].formatted;
                            const floors = object.properties.floors;

                            // вывод информации об организации на страницу
                            const infoElement = document.getElementById("info");
                            infoElement.innerHTML = `
                                <p>Название: ${name}</p>
                                <p>ID Организации: ${id}</p>
                                <p>Адрес: ${address}</p>
                                <p>Телефон: ${phone}</p>
                                <p>Этаж: ${floors}</p>
                            `;
                        }
                    })
                    .fail(function (err) {
                        console.error(err);
                    });
                });
       

});


</script>
</body>
</html>

Ответы

▲ 1

Функция findOrganization() предназначена для добавления геообъекта организации на карту, а не выгрузку данных в пользовательские базы (что, к слову, запрещают условия использования API). И потому её ответ (состав объекта) недокументирован – он предназначен лишь для отрисовки корректного балуна в том виде, который задумал Яндекс.

Пример кода, способный отобразить найденный объект и послать его в консоль:

ymaps.ready(init);
function init(ymaps) {
    var myMap = new ymaps.Map("map", {
        center: [55, 38],
        zoom: 14
    });

    ymaps.findOrganization('1124715036').then(
        function (orgGeoObject) {
        console.log(orgGeoObject);
        myMap.geoObjects.add(orgGeoObject);
        orgGeoObject.balloon.open();
    },
        function (err) {
        console.log(err);
    });
}