Почему не работает yandex карты 2.1 в табе?

Подскажите, почему не работает в табе яндекс карта? Выражается это в виде масштаба 6000 км, вместо точного определения. Во вне таба работает отлично. Дополнительно установил обработку нажатия на таб, чтобы был рефреш карты, но не помогает.

<script type="text/javascript">

    var address = "@Model.Address";
    var title = "@Model.Title";
    var edcMapError = null;



    function mapInit() {
        
        window.edcMap = new ymaps.Map("edc-map", {
            center: [55.76, 37.64],
            zoom: 10,
            minZoom: 8,
            maxZoom: 12,
            controls: ['largeMapDefaultSet']
        });

      

        ymaps.geocode(address, {

            // Сортировка результатов от центра окна карты.
            // boundedBy: myMap.getBounds(),
            // strictBounds: true,
            // Вместе с опцией boundedBy будет искать строго внутри области, указанной в boundedBy.
            // Если нужен только один результат, экономим трафик пользователей.
            results: 1
        }).then(function (res) {
            // Выбираем первый результат геокодирования.
            var firstGeoObject = res.geoObjects.get(0),
                // Координаты геообъекта.
                coords = firstGeoObject.geometry.getCoordinates(),
                // Область видимости геообъекта.
                bounds = firstGeoObject.properties.get('boundedBy');

            firstGeoObject.options.set('preset', 'islands#darkBlueDotIconWithCaption');
            // Получаем строку с адресом и выводим в иконке геообъекта.
            firstGeoObject.properties.set('iconCaption', firstGeoObject.getAddressLine());

            // Добавляем первый найденный геообъект на карту.
            window.edcMap.geoObjects.add(firstGeoObject);
            // Масштабируем карту на область видимости геообъекта.
            window.edcMap.setBounds(bounds, {
                // Проверяем наличие тайлов на данном масштабе.
                checkZoomRange: true
            });
            //
            

            /**
             * Все данные в виде javascript-объекта.
             */
            console.log('Все данные геообъекта: ', firstGeoObject.properties.getAll());

            console.log('Метаданные ответа геокодера: ', res.metaData);

            console.log('Метаданные геокодера: ', firstGeoObject.properties.get('metaDataProperty.GeocoderMetaData'));

            console.log('precision', firstGeoObject.properties.get('metaDataProperty.GeocoderMetaData.precision'));

            console.log('Тип геообъекта: %s', firstGeoObject.properties.get('metaDataProperty.GeocoderMetaData.kind'));
            console.log('Название объекта: %s', firstGeoObject.properties.get('name'));
            console.log('Описание объекта: %s', firstGeoObject.properties.get('description'));
            console.log('Полное описание объекта: %s', firstGeoObject.properties.get('text'));

            console.log('\nГосударство: %s', firstGeoObject.getCountry());
            console.log('Населенный пункт: %s', firstGeoObject.getLocalities().join(', '));
            console.log('Адрес объекта: %s', firstGeoObject.getAddressLine());
            console.log('Наименование здания: %s', firstGeoObject.getPremise() || '-');
            console.log('Номер здания: %s', firstGeoObject.getPremiseNumber() || '-');

            /**
             * Если нужно добавить по найденным геокодером координатам метку со своими стилями и контентом балуна, создаем новую метку по координатам найденной и добавляем ее на карту вместо найденной.
             */
            /**
             var myPlacemark = new ymaps.Placemark(coords, {
             iconContent: 'моя метка',
             balloonContent: 'Содержимое балуна <strong>моей метки</strong>'
             }, {
             preset: 'islands#violetStretchyIcon'
             });

             myMap.geoObjects.add(myPlacemark);
             */
        });

        $(document).on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) {

            if (e.target.getAttribute("href") == "#pill-2") {
  
                window.edcMap.container.fitToViewport();
            }
        })
    }

    

    $(function () {
        

        if (edcMapError) {
            alert(edcMapError);
        }
        else {
            
            ymaps.ready(mapInit);
            
            
        }

        

    });


</script>
  • Вопрос задан
  • 252 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы