Google Maps API v3 でマーカーのコンストラクタに渡すオプションにオレオレプロパティを追加してみる修行
えっと、Google Maps API v3 のマーカーオブジェクトを作るときのオプションについて。
オプションとして連想配列リテラルを渡したりするわけですが、そのとき勝手なキーの値を渡すと、マーカーオブジェクトのプロパティになるようだ。これを使うとマーカーにイベントを登録したときにイベントハンドラの中でこのプロパティを使えて便利だったよ、ということで。
えっと、まあ、連想配列 fields に地点オブジェクト(自前に定義したもの)が入っているとして、
function panTo(key) { if (! key in fields) return; var field = fields[key]; map.panTo(field.latlng); map.setZoom(field.zoom); }
こんな関数 panTo() があるとして、
for (var key in fields) { var field = fields[key]; if (field['poly']) { field.poly.setMap(map); var image = new google.maps.MarkerImage(field.mark.image, new google.maps.Size(64, 64), new google.maps.Point(0,0), new google.maps.Point(0, 32)); var shadow = new google.maps.MarkerImage(field.mark.shadow, new google.maps.Size(64, 64), new google.maps.Point(0,0), new google.maps.Point(0, 32)); var opts = { position : field.latlng, title : field.name, icon : image, shadow : shadow, map : map, key : field.key }; var marker = new google.maps.Marker(opts); google.maps.event.addListener(marker, 'click', function(e) { panTo(this.key); });
まあ、こんな感じでマーカーを作ってイベントを登録してみたよ、と。
Marker のコンストラクタに渡している opts オブジェクトに key プロパティがありますが、これは Marker のコンストラクタで使われるプロパティとして定められているものではなくて、勝手に付け加えたもの。イベントハンドラのクロージャで this はイベントを登録した marker オブジェクトになるわけですが、ここで先ほど勝手に付け加えた key プロパティが拾えた、という話。
ドキュメント読んでないので不明だが、これって普通に知られていることだろうか。
2012-05-03の読みさし
新農民になろう! 就農計画の設計と実例:30%
- 作者: バウンド,伊藤裕樹
- 出版社/メーカー: 技術評論社
- 発売日: 2009/01/21
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 8回
- この商品を含むブログ (3件) を見る
2012-02-20の読みさし
カラフル:100%
- 作者: 森絵都
- 出版社/メーカー: 理論社
- 発売日: 1998/07
- メディア: 単行本
- 購入: 4人 クリック: 530回
- この商品を含むブログ (163件) を見る
タネが危ない:50%
- 作者: 野口勲
- 出版社/メーカー: 日本経済新聞出版社
- 発売日: 2011/09/06
- メディア: 単行本
- 購入: 1人 クリック: 31回
- この商品を含むブログ (16件) を見る
数学的にありえない 上:4%
- 作者: アダムファウアー,Adam Fawer,矢口誠
- 出版社/メーカー: 文藝春秋
- 発売日: 2006/08/28
- メディア: 単行本
- 購入: 1人 クリック: 33回
- この商品を含むブログ (105件) を見る
2011-11-10の読みさし
コアjQuery+プラグイン/jQuery UI 開発実践技法 (Programmer's SELECTION):100%
コアjQuery+プラグイン/jQuery UI 開発実践技法 (Programmer's SELECTION)
- 作者: Bear Bibeault,Yehuda Katz,吉川邦夫
- 出版社/メーカー: 翔泳社
- 発売日: 2011/08/31
- メディア: 大型本
- 購入: 8人 クリック: 296回
- この商品を含むブログ (25件) を見る
2011-10-07 のツイート
- 10:17:12 RT @unaubot: 私、bot です QT @E_Lightfield なるほど…!RT @notas1485: 飯能→つい反応 飯能+反応→そうなんです 飯能+bot→私、botです
- 11:18:26 Creap も買ってきて飲み比べてみるか。このままだと Brite を 300g 消費するうち Brite に慣れてしまう。ま、それはそれでいいか
- 18:25:04 mysqldump のオプションとか、全然覚えておけない ...
- 23:08:15 mysqldump --no-data、mysqldump --no-create-info、どっちも使うとき調べて、すぐに忘れてしまう。
- 23:15:00 今やっている作業は早く終わらせたい。今日は徹夜にトライしてみるか。
2011-10-06 のツイート
- 09:29:34 五反田。
- 09:31:28 朝洗濯したのに、干してくるのを忘れちゃった。 #paparen
- 10:05:45 @hitobluemoon お母さん、がんばって !!
- 10:07:04 gdb 使ってるのに printf デバッグを併用している。gdb 使いこなせるようになりたいな #gdb
- 10:08:34 C 言語で書いたらさらさら書けそうなところを Qt のクラスライブラリを使って実現しようとしてはまっている。いかんな。 #Qt
- 10:50:42 保育園の送り迎え、今日はつれあいにお任せ。ちょっと寂しい。 #paparen
- 11:09:35 aipo って使いやすいですか。このたび、インストールして試す必要が出てきました。公式サイトを見ても、アプリケーションサーバや DB については書かれていないような。組込みの WEB サーバや RDBMS を組み込んでいるのかな。
2011-10-05 のツイート
- 10:06:05 五反田。
- 10:06:47 つれあいはおいしいと言っているけれど、何か一つ足りない気がする。今回作ったあんこ
- 10:48:40 M-g g、か。emacs は長いこと使ってきているけれど、いつも M-x goto-line って打ってる。そろそろ覚えておくか。 #emacs
- 10:59:06 今日も gdb を使ってデバッグ。コマンドとかぜんぜん覚えていない。 #gdb
- 12:22:49 HTTP プロキシの設定エラーがあると、qFatal() しているところでアボートする。原因まで追うと大変そうなので、正しいプロキシの設定に改めてアボートを回避するだけにしておこう #Qt
- 13:57:46 混雑を避け、遅めの昼食。ハンバーグ定食にコーヒーまでついて、をおごってもらいました。ありがたい。
- 14:07:45 あれ? qFatal() すると abort するのかな? #Qt