Клуб API Карт

Добавления меток пользователями и вывод по категориям свой слой карты

kiikiik
4 февраля 2013, 11:20

Добрый день. Помогите разобраться что не так в коде. Есть пример тут Яндекс.Карта на Вашем сайте с возможностью добавления меток пользователями и вывод по категориям. Версия для API Яндекс.Карт 2.х файлы как есть в оригинале  

 тут . 

Я исправил код  

myMap = new ymaps.Map("map", {
                    center: [56.326944, 44.0075], 
                    zoom: 13
                }, {
                    balloonMaxWidth: 600
                });

 

на код из примера Яндекс Апи, Пользовательский слой карты

  

// Создаем декартову систему координат, на которую будет проектироваться карта.
            // Определяем границы области отображения в декартовых координатах.
            var myCoordSystem = new ymaps.projection.Cartesian([
                    // Координаты левого нижнего угла
                    [-1, -1],
                    // Координаты правого верхнего угла
                    [1, 1]
                ]),
                // Создадим собственный слой карты:
                MyLayer = function () {
                    return new ymaps.Layer(
                        // Зададим функцию, преобразующую номер тайла и уровень масштабировая
                        // в URL до тайла на нашем хостинге
                        function (tile, zoom) {
                            return "http://mt.gmapuploader.com/tiles/FVSH1JsvdT/tile-" + zoom + "-" +
                                (tile[1] * Math.pow(2, zoom) + tile[0]) + ".jpg";
                        }
                    )
                };
            // Добавим конструктор слоя в хранилище слоёв под ключом my#layer
            ymaps.layer.storage.add('my#layer', MyLayer);
            // Создадим новый тип карты, состоящий только из нашего слоя тайлов,
            // и добавим его в хранилище типов карты под ключом my#type
            ymaps.mapType.storage.add('my#type', new ymaps.MapType(
                'Схема',
                ['my#layer']
            ));
                // Создаем карту в заданной системе координат.
                // Для того, чтобы был виден пользователький слой карты, устанавливаем ее тип в null.
            var myMap = new ymaps.Map('map', {
                    center: [0, 0],
                    zoom: 2,
                    type: 'my#type'
                }, {
                    maxZoom: 4, // Максимальный коэффициент масштабирования для заданной проекции.
                    minZoom: 2, // Максимальный коэффициент масштабирования
                    projection: myCoordSystem
                });

 

файлы с иправлением можно скачать тут , карта отображается, метки в базу данных добавляются, но не выводятся на карту.

При нажатии на категории (к примеру бар), в консоле видна ошибка Uncaught TypeError: Cannot read property 'geoObjects' of undefinedв функции function show_c(c). 

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

Очевидно в вашу функцию приходит undefined,

у которого Вы пытаетесь взять значение поля geoObjects

И где исправить?

Видимо там где вы ее вызываете.

Попробуйте отладить код в этом месте, мы публиковали в клубе статьи про поиск ошибок в коде, использующем АПИ Карт

Все просто, у Вас два раза переменная myMap объявлена.

В начале var myMap, myCollection;

И в 56 строке файла index.html: var myMap = new ymaps.Map('map', {

Нужно в ней убрать var, тогда все нормально работает

 

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