0

Google Maps API v3 を使用してツールを作成しています。いくつかのポリゴンとマーカーをオーバーレイし、それらをクリアする必要があります。

私はこれに似た例に従おうとしていまし-ポリゴン/マーカーを配列にプッシュし、それらを配列から削除してマップを削除します。

ただし、ポリゴンまたはマーカーを配列にプッシュすると、ポリゴンとマーカーはマップ上に正しく表示されますが、結果の配列値は常に「未定義」になります。

注: wicketを使用して、db から Google マップに WKT を読み取ります。

以下の関数には問題があります - ID が functions.php に送信され、その ID の 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);
        }
    });
}
4

1 に答える 1

2

これは、Google Maps API v3setMap()によると、戻り値がないためです。

これの代わりに:

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

これを行う必要があります:

var poly = new google.maps.Polygon(wkt.toObject());
layersArr.push(poly);
poly.setMap(map);
于 2014-09-02T19:46:06.633 に答える