При отправке полигонов/маркеров Google Map в массив данные не отправляются

Я создаю инструмент, используя API Google Maps v3. Мне нужно наложить несколько полигонов и маркеров и очистить их.

Я пытался следовать примеру, похожему на this — поместить полигоны/маркеры в массив, а затем удалить их из массива и, следовательно, из карты.

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

Примечание. Я использую wicket для чтения WKT из моей базы данных в карты Google.

Функция ниже имеет проблему - идентификатор отправляется в functions.php, WKT для этого идентификатора возвращается, и он отображается - и должен быть помещен в массив, но это не так.

Я попытался установить полигон/маркеры в переменную и поместить ее в массив, но это также не сработало.

var layersArr = [];

function getGeo(id){
    $.ajax({
        url: 'functions.php',
        type: 'POST',
        data: {
            request: 'getGeo',
            id: id
        },
        success: function(data){
            wkt.read(data);

            switch(wkt.type){
                case 'polygon':
                case 'multipolygon':
                    layersArr.push(new google.maps.Polygon(wkt.toObject()).setMap(map));
                    break;
                case 'point':
                    layersArr.push(new google.maps.Marker(wkt.toObject()).setMap(map));
                    break;
                default:
                    alert('Unrecognized wkt type');
                    return;
                    break;
            }
        },
        error: function(jqXHR, text, error){
            ajaxError(jqXHR, text, error);
        }
    });
}

person ryantkelly    schedule 02.09.2014    source источник


Ответы (1)


Это связано с тем, что setMap() не имеет возвращаемого значения в соответствии с API Google Maps v3.

Вместо этого:

layersArr.push(new google.maps.Polygon(wkt.toObject()).setMap(map));

Вам нужно сделать это:

var poly = new google.maps.Polygon(wkt.toObject());
layersArr.push(poly);
poly.setMap(map);
person Slippery Pete    schedule 02.09.2014
comment
Вот оно! Благодарю вас! - person ryantkelly; 03.09.2014