作成した Google マップのポリゴン オブジェクトと同じ名前の文字列で満たされた配列があります。特定のオプションを設定するために配列を反復処理したいと思います。コードは次のとおりです。
for (var i = 0; i < statesPoly.length; i++) {
google.maps.event.addListener(statesPoly[i], 'mouseover', function() {
statesPoly[i].setOptions({ strokeWeight: '2' });
});
}
実行すると、スクリプトが文字通り statesPoly[i] を使用しているように見えるため、「undefined のメソッド 'setOptions' を呼び出せません」というメッセージが表示されます。statesPoly[i] を statesPoly[11] などに置き換えると、スクリプトは期待どおりに機能します。
次のようなことを試してみると、ループも期待どおりに機能します。
for (var i = 0; i < statesPoly.length; i++) {
alert(statesPoly[i].strokeColor);
}
私は何を間違っていますか?
アップデート:
ここに近づく。this
場合によってはusing が機能する理由は、関数がオブジェクトを期待しており、それに文字列を与えているためだと思います。これは事実でしょうか?
alert(statesPoly[0]);
google.maps.event.addListener(sarawakPoly, 'mouseover', function() {
$("#"+statesPoly[0]).addClass("highlight");
sarawakPoly.setOptions({ strokeWeight: '2' });
//infowindow.open(map,marker);
});
上記のコードは SarawakPoly でアラートを出し、statesPoly[0] を ID の文字列として使用すると期待どおりに動作します。これ
alert(statesPoly[0]);
google.maps.event.addListener(statesPoly[0], 'mouseover', function() {
$("#"+statesPoly[0]).addClass("highlight");
statesPoly[0].setOptions({ strokeWeight: '2' });
//infowindow.open(map,marker);
});
「Uncaught TypeError: 未定義のプロパティ 'mouseover' を読み取れません」ため、機能しません
私が正しければ、JS に配列変数をオブジェクトとしてキャストさせるにはどうすればよいですか?