Клуб API Карт

Яндекс карты и Ajax запрос

Пост в архиве.

Добрый день!

Мне необходимо отобразить на карте метки конкретного проекта. В БД сайта у меня есть таблица проектов, и таблица меток (с координатами для отображаения на карте). Соответственно, при выборе проекта мне надо черех AJAX запрос получить список меток, и отобразить его на карте.

Я делаю следующим образом:

1) Создаю HTML блок, в котором будет отображаться карта:

<div id="mapYandex" style="width: 100%; height: 600px;"></div>

2) На странице есть также HTML элеменет select с id = ddlProjects. К нему я подвешиваю событие onchange="selectProjects();" 

3) И вот код javascript код:

 

<script type="text/javascript" language="javascript">

var myMap;

function selectProjects()

{

     ymaps.ready(function () {

                createMap();

 

            });

}


function createMap()

{

         $("#mapYandex").empty();

            myMap = new ymaps.Map('mapYandex', {

                center: [48.708958, 44.514541],

                zoom: 10

            });

 

            myMap.controls

                    .add('zoomControl', { left: 5, top: 5 })

                    .add('typeSelector')

                    .add('mapTools', { left: 35, top: 5 });

 

            myMap.behaviors.enable("scrollZoom");

            

            loadYandexMapClients();

        }

}


// загрузка клиентов на карту

        function loadYandexMapClients() {

            $.ajax(

                {

                    type: "POST",

                    url: "WebServiceYandex.asmx/createYandexClientsPolyline",

                    data: '{idProject: "' + $("#ddlProjects :selected").val() + '"}',

                    contentType: "application/json; charset=utf-8",

                    dataType: "json",

                    async: "true",

                    cache: "false",

 

                    success: function (msg) {

                        var records = msg.d;

                        $.each(records, function (index, record) {

                            var yandexXY = record.yandexXY;

 

                            if (yandexXY == null || yandexXY.length == 0)

                                return;

 

                            var t1 = yandexListXY.split('#');

                          

                            var myPlacemark;


                            for (i = 0; i < t1.length; i++) {

                                t = t1[i].split(',');

                                myPlacemark = null;

                                myPlacemark = new ymaps.Placemark([t[1], t[0]], {

                                    balloonContentHeader: "<b>описание</b>",

                                    balloonContentBody: "<i><b>описание</b></i>",

                                    hintContent: "текст",

                                    iconContent: i + 1

                                });

                                myMap.geoObjects.add(myPlacemark);

                            }

 

                        });

                    },

 

                    Error: function (x, e) {

                        alert("Some error");

                    }

                });

 

        }

</script>

 

 

Но такой вариант не работает. Выдается вот такая ошибка, совсем не понятно о чем она:

Uncaught TypeError: Cannot read property 'offsetWidth' of nullcombine.xml?modules=3G5o6B3A3X3K3B37-5.l-!-)-4-15i5m7*.s4z--9Q9Z$a7,4*-D-E$h$m$i9n9G8i8c$j7q7j5g9s8…:1

1 комментарий

На будущее лучше убирать свой код под кат (сейчас я убрал его за вас)

Мало кто любит когда его лента новостей превращается в длинную простыню кода.

 

Ошибка такая обычно появляется когда контейнер карты с указанным id в DOM-дереве отсутствует.

 

Подробнее можно узнать подключив АПИ в режиме дебаг &mode=debug