やっちまった。
2006/10/13 金曜日 - 20:02:41 by webmaster指摘されて今気がついた。
wp-googlemapsプラグインがIEでは動いてなかったんだ。(^^;
だぁからIEはキライなの。
直してきます。
指摘されて今気がついた。
wp-googlemapsプラグインがIEでは動いてなかったんだ。(^^;
だぁからIEはキライなの。
直してきます。
イメージが添付されてたらそれをひっぱってくる機能をつけてみた。
まだ添付ファイルが画像かどうかのチェックはしてないので機能だけのテスト。
wp-googlemapsプラグイン動作テスト中。
コメントタグで
<!– googlemaps:{loc:”新宿駅”} –>
と書くと、書式がマッチすればリアルタイムでgeocodeして、緯度・経度情報を付加。
<!– googlemaps:{loc:”新宿駅”, lat:35.689729, lng:139.700464} –>
この情報は専用キーでmeta情報として登録するので、ブログ内の他記事の位置情報も取得し、同一地図上に表示させる。
この後、細かい設定項目を追加予定。
function GMGeocoding() {
this.content = document.getElementById("content");
this.regex = /\<!-- googlemap:({.*}) --\>/;
this.matches = this.content.value.match(this.regex);
this.geocode();
}
GMGeocoding.prototype.geocode = function() {
if (!this.matches) return false;
......
}
こんなコードをフォームのsubmitイベントから呼び出して処理をさせようと思ったら動かない。
「this.geocode is not a function」とか言われる。
何でかと思って調べたら、ここで呼び出してる this が自分自身を参照していなかたった。呼び出したフォームのDOMオブジェクトを参照してる。
うーん。
と、思ったけど、致命的な勘違いをしてるような気がする。いま気がついた。
やば。
非同期処理をシーケンシャルに扱うために
自分だけじゃどうにもならないことを既にこうやって形にしてる人がいるんだよね。
もっとがんばらんと。
記事投稿時にgeocodingさせようと思っていろいろやってみたけれど、問題の回避方法が見つからない。
1. 記事投稿(フォーム送信ボタンをクリック)
↓
2. onsubmitイベントで処理開始
↓
3. geocodingして記事中の住所文字列に緯度経度情報を追加
↓
4. フォーム送信
という流れで処理をしたいのだけれど、
submitイベントを生かしておくとgoogleからの非同期通信が完了する前にフォーム送信されてしまうし、
イベントをキャンセル(preventDefault)してしまうとこんどは変換後のフォーム送信が出来ない。
うまい方法は無いのだろうか?
とりあえずの逃げとして、記事入力中にkeyupイベントで即時変換をかけたけれど。
記事中のコメントタグから住所を抽出してgooglemapで表示させるだけなら簡単に出来るのだけれど、どうせなら他の記事中のポイントも併せて表示したい。(そっちの方がいろんな使い方が出来そう。)
どのタイミングでgeocodingさせるかが悩みどころ。
地図表示時に登録済みの全住所を投げるのはスマートじゃないと思うので、出来れば投稿時にgeocodingまで済ませたいけれど、どう処理しよう?
記事投稿のonsubmitで処理すればいいのか。
簡単に出来そうだと思って始めたのはいいけれど、ちょっと面倒になってきた。
WordPressにGoogleMapを組み込もうと思っていろいろ実験中。
プラグイン化を目標。
Google Maps API リファレンス
geocodingがまだ日本国内で使えないのでGoogle AJAX Search APIを使って緯度経度情報を取得する必要がある。
面倒だなぁ、と思ったら本家にあるじゃん、便利に使えそうなのが。
Using the GSmapSearchControl Solution
これを組み込めばなんとかなりそう。