Клуб API Карт

TypeError: ymaps.Map is not a constructor

zbs2000
24 июля 2012, 13:31

Карты

На что ругается подскажите пож. Вызываю карту вот так:

my_map = new ymaps.Map(map_div_name, {
                center: [koordinata_center_x, koordinata_center_y],
                zoom: map_zoom,
                type: "yandex#map"
                });

 

показывает на поле type:  и выдает ошибку " TypeError: ymaps.Map is not a constructor "

 

Помогите пож

16 комментариев
Подписаться на комментарии к посту

наверное вы не дождались загрузки?

Покажите код пациента.

ymaps.ready(map_for_nav);
function map_for_nav(cnt_x, cnt_y, zoom, div_id, js_array) {
        if (!div_id){var map_div_name = 'ymaps-map-id_133866546972757176647';} else {var map_div_name = div_id;};
        if (!cnt_x) {var koordinata_center_x = cnt_x;} else {var koordinata_center_x = cnt_x;};
        if (!cnt_y) {var koordinata_center_y = cnt_y;} else {var koordinata_center_y = cnt_y;};
        if (!zoom) {var map_zoom = 3;} else {var map_zoom = zoom;};
        var json_string = Base64.decode( js_array );
        var my_map;
        var my_array = JSON.parse( json_string );
           
document.getElementById(map_div_name).innerHTML = '';
alert(1);
    if (!my_map){
            my_map = new ymaps.Map(map_div_name, {
                center: [koordinata_center_x, koordinata_center_y],
                zoom: map_zoom,
                type: "yandex#map"
                });
alert(2);
            my_map.controls
                .add("zoomControl")
                .add("mapTools")
                .add(new ymaps.control.TypeSelector(["yandex#map", "yandex#satellite", "yandex#hybrid", "yandex#publicMap"]));
alert(3);
    // vivod massiv MT , GT
            var mt_id = '';
            var mt_gid = '';
            var mt_sid = '';
            var mt_enable = '';
            var mt_x = '';
            var mt_y = '';
                for (var key1 in my_array)
                    for (var key2 in my_array [key1])
                        for (var key3 in my_array [key1] [key2]){
                            for (var key4 in my_array [key1] [key2] [key3]){
                                    }; // 4
                                if ( [key1] == 'mt' ){   
                                        mt_id = my_array['mt'][key2][key3]['id'];
                                        mt_gid = my_array['mt'][key2][key3]['gid'];
                                        mt_sid = my_array['mt'][key2][key3]['sid'];
                                        mt_enable = my_array['mt'][key2][key3]['mt_chk_'+[key2]+'_'+[key3]];
                                        mt_x = my_array['mt'][key2][key3]['x'];
                                        mt_y = my_array['mt'][key2][key3]['y'];   
                                if ( mt_enable == 'enable' ){
                                        my_map.geoObjects.add(new ymaps.Placemark([mt_y, mt_x], {balloonContent: ''+ mt_id +''}, {preset: "twirl#houseIcon"}));   
                                    }else{ /* ne delat nichego */ }; // ---if ( mt_enable == 'enable' ){ --- //
                                }else{}; // --- if ( [key1] == 'mt' ){    --- //
                                //                       
                                    }; // 3
        } else {
                document.write('

------- ELSE -----

');
                my_map.destroy(); // Деструктор карты
                my_map = null;
//                $("#toggle").attr('value', 'Показать карту снова');
        }
//            } // верхний бинд
//  }); // верхний бинд
};
//        }
//

вызывается вот так

должно вызывается само и без нажатия на кнопку так как прописано в .ready

А как вы само АПИ подключаете?

 

 

написано в

Кстати насчет подключения пробовал еще вот так :

Фигня у вас какая-то. Можете ссылку дать на страницу посмотреть, или полный html код

 

if (!div_id){var map_div_name = 'ymaps-map-id_133866546972757176647';} else {var map_div_name = div_id;};

За что вы так не любите javascript?!... Достаточно всего лишь:

div_id = div_id || 'ymaps-map-id_133866546972757176647';

... и вам больше не нужна лишняя переменная map_div_name, и код выглядит понятнее.

Спасибо. всего месяц как узнал что такое JS. Большое спасибо за совет. Так намного лучше чем у меня было.

 

Кстати заметил очень интересную вещь в работе моей функции.

Если сделать вот так :

onclick="map_for_nav('50.43', '30.51', '5', 'ymaps-map-id_133866546972757176647', '

($unserialize_massiv_nav)); echo $js_array;?>');"

 

 

тоесть прицепить функцию к событию кнопки или чего либо еще - то все нормально отрабатывает.

говорил же я вам - ymaps.ready

То я раньше написал чем получил. Сейчас пробую

 ymaps.ready

 

Спасибо огромное

 

есть кусок кода

type='text/javascript'>

>

заменить на

type='text/javascript'>>

и будет работать.
Вы ОБЯЗАНЫ дождаться загрузки апи. Оно приходит не сразу.


все равно не хочет


           

 

 

------   Поменял местами в   -  строки (до этого они были наоборот) и все стало ОК

 

Спасибо огромное

за помощь

работает спасибо всем!