エンコードから複数のポリゴンを作った場合のhide()とshow()の動作

17 views
Skip to first unread message

Tatsuya Nagamochi

unread,
Dec 27, 2009, 10:02:21 AM12/27/09
to Google-Maps-API-Japan
polygon = new GPolygon.fromEncoded({polylines: lines, fill: true,
color: '#ff6699', opacity: 0.3, outline: true});
~中略~
polygon.hide();

として「polygon」で例えば3つのポリゴンを形成して非表示にしようとした場合、1つのポリゴンしか非表示にできません。
3つのポリゴン全てを非表示にする方法はないでしょうか。

イベント処理やGmap2.clearOverlays()に関しては、3つのポリゴン全てに適用されるようなのですが。
Gmap2.removeOverlay(polygon)でも同様に1つのポリゴンしか削除できません。

hiroaki

unread,
Dec 27, 2009, 12:01:32 PM12/27/09
to Google-Maps-API-Japan
ソースが提示されていないと解らないので、おそらく、ですが、
GPolygon.fromEncoded() を呼んだときの戻り値を、おなじ変数 polygon に代入しているのではないでしょうか。であれ
ば、そのようになることのつじつまが合うようです。( hide や removeOverlay で反応するのは、最後に作成した polygon
ですね?)

その場合は GPolygon.fromEncoded() を使うか否かは関係はありません。 API ではなく JavaScript の話になり
ます。

みっつ、別々の変数に代入してみて下さい。そのみっつのオブジェクトそれぞれで、 hide / show を制御します。配列を使うと便利です。

var polygons = [];
polygons.push( new GPolygon.fromEncoded(...) );
polygons.push( new GPolygon.fromEncoded(...) );
polygons.push( new GPolygon.fromEncoded(...) );

for( var i = 0; i < polygons.length; ++i ){
polygons[i].hide();

Reply all
Reply to author
Forward
0 new messages