Клуб API Карт

Ошибка при добавлении геообъектов в кластеризатор

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

 

$(document).ready(function () {
    function init() {
        $(window).bind('hashchange', function () {
            myMap.destroy();
        });
        var myMap = new ymaps.Map("map", {
            center: [50.4501, 30.5234],
            zoom: 12,
            behaviors: ['default', 'scrollZoom']
        });
        // после нажатия кнопки "Показать" получаем данные
        $('#show').bind('click', function () {
            var name = $('#select').val(),
                t1 = $('#t1').val(),
                t2 = $('#t2').val();
            // отправляем запрос
            $.ajax({
                url: '<?php echo site_url("gps/c_gps/getCoordinatesByUser"); ?>',
                type: 'POST',
                async: false,
                dataType: 'json',
                data: {
                    name: name,
                    t1: t1,
                    t2: t2
                },
                success: function (data) {
                    console.log(data);
                    var myCollection = new ymaps.GeoObjectCollection();
                    var c = 1; // счетчик последовательности
                    for (var i = 0; i < data.length; i++) {
                        var place = new ymaps.Placemark([data[i].lat, data[i].long])
                        place.properties.set('iconContent', c);
                        place.properties.set('balloonContentBody', data[i].time);
                        myCollection.add(place);
                        c++;
                    }
                    // создание кластера
                    cluster = new ymaps.Clusterer({
                        clusterDisableClickZoom: true,
                        //clusterIconContentLayout: MyIconClusterContentLayout,
                        clusterHideIconOnBalloonOpen: true,
                    });
                    cluster.add(myCollection);
                    myMap.geoObjects.add(cluster);
                }
            });
        });
    }
    // init
    ymaps.ready(init);
});

 

хочу вывести точки на карту, пишет Uncaught TypeError: Cannot call method 'getCoordinates' of null.


что посоветуете?!

6 комментариев
Удалённый пользователь
28 января 2016, 02:25

$(document).ready(function () {

function init() {

$(window).bind('hashchange', function() {

myMap.destroy();

});

 

var myMap = new ymaps.Map ("map", {

center: [50.4501, 30.5234],

zoom: 12,

behaviors:['default', 'scrollZoom']

});

 

// после нажатия кнопки "Показать" получаем данные

$('#show').bind('click', function(){

var name = $('#select').val(),

t1 = $('#t1').val(),

t2 = $('#t2').val();

 

// отправляем запрос

$.ajax({

url: '',

type: 'POST',

async: false,

dataType: 'json',

data: {

name: name,

t1: t1,

t2: t2

},

success: function(data) {

console.log(data);

 

var myCollection = new ymaps.GeoObjectCollection();

 

var c = 1; // счетчик последовательности

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

var place = new ymaps.Placemark([data[i].lat, data[i].long])

place.properties.set('iconContent', c);

place.properties.set('balloonContentBody', data[i].time);

myCollection.add(place);

c++;

}

 

// создание кластера

                                cluster = new ymaps.Clusterer({

                                    clusterDisableClickZoom: true,

                                    //clusterIconContentLayout: MyIconClusterContentLayout,

                                    clusterHideIconOnBalloonOpen: true,

                                });

 

cluster.add(myCollection);

                                myMap.geoObjects.add(cluster);

}

});

});

 

} // init

кластеризатор ждет javascript-массив геообъектов в методе add, а не геоколлекцию. посмотрите в документации

Удалённый пользователь
28 января 2016, 02:25

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

Иконки кластера можно изменить 2-мя способами:

1. с помощью опции icons, передав в нее массив с урлом изображения и его размерами

2. с помощью фабрики макетов 

способ номер 2 более сложный, но и более гибкий, с его помощью можно сделать любую свою html-верстку иконки кластера.

 

Если нужно совсем что-то сложное и экстраординарное, можно пойти еще дальше и написать свой класс, отнаследовав его от класса кластеризатора, например, как в этой статье из блога.

Просто на будущее, 

код лучше размещать через кнопку "врезка".

Я на этот раз отформатировал и убрал Ваш код под врезку.

Если код или пост плохо отформатировался, можно его отредактировать, кнопка "ред." справа внизу под постом.

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

Удалённый пользователь
28 января 2016, 02:25

ок, где эта кнопка?!