このサイトでも、たまにお店の紹介とかで BLOG に地図を貼り付けたりしてるんだけど、毎回いろいろ手動でゴチャゴチャやるのも面倒。
そこで、地図を表示するためのタグを簡単に作成するスクリプトを書いてみた。
まえにちょこっと紹介したけど、一応使えるレベルのブラッシュアップも終わったんで再公開。
利用できるのは、下記の3種類のMAP。
何れも、小地図(200×200)で位置表示し、クリックすると、位置をマークした印刷用地図を開くようになっている。
(小地図のサイズは、設定で変更可能)
1,Yahoo Map を利用した BLOG用地図のソース自動生成
2,Google Map を利用した BLOG用地図のソース自動生成
3,Goolge Map Api を利用した BLOG用地図のソース自動生成
1,2 は、ちょっとライセンス的にどうかと思ったのだけど、あちこちのサイトで使われてるみたいなんで、まぁ大丈夫かな。
(一応、利用は自己責任でってことで)
この2つは、どんな BLOG でも設定等を全くしなくて利用できるタイプで、とても簡単に利用できる。
3は、小地図で Google Map のコントローラとか使えて、スケールリサイズやドラッグによる地図の移動が出来る。
ただし、利用するには、事前に Goolge Maps Api key を取得する必要がある。(無料)
そして、BLOG のテンプレート等にスクリプトを登録しないとダメ。
設定方法等は、ソース自動生成のページに書いてあるので読んでね。
無料の FC2 BLOG に設定してみたので、どんな感じになるかは、こちらのサンプルを見てね。
ちょっと技術的な話。
実は Google Map Api を利用する方法はかなり悩んだのだ。
最初は、ソース生成で Map を作画するスクリプトそのものをはき出すようにしたんだけど、どうもネストした Div タグの中でこれをやると、Firefox だとオッケーなんだけど、IEがコケる。
BLOGサイトなんて、Div タグはネストしまくりだし…
ネットで情報を探してみると、どうやら IE の場合、Map作画用スクリプトは <head> に記述しないとダメらしい。
BLOG の場合、当然地図は1つだけってことは無いので、複数あった場合、その数分の作画スクリプトを <head> 挿入するのも芸が無い。
(というか、後付のスクリプトで動くのか…)
悩んだ末
逆転の発想で、Map を作画する Div タグに、地図作画用のパラメタを書き込み、これを非表示にしておいて、あとからこの Map用 Div タグを検索し、<head> に記述した地図作画用関数で作画しちまえばオッケーのはずだ。
(onLoad で、Map用 Div タグを検索して実際のマップに書き換える )
自分の BLOG で試すのもなんだし、とりあえず FC2 BLOG で試してみる。
たしかに、Firefox ではうまくいった。
でも、あいかわらず IE がダメ…
なんで??
そこでハタと気が付く。
FC2 って、キャラクタセットが「EUC-J」でねの?
ためにし、Google map 作画用スクリプトに「charset="utf-8"」を付加してみた。
(Google map api は UTF-8 を前提としている)
ばっちりだ。
この Google map api 系、なにが面倒かって、Maps api key って、サイトで登録するんで、ローカルでのテストが出来ない。
毎回サーバにアップしなきゃならんのだ。
とくに IE なんて、スクリプトのデバッグ環境が貧弱なんで余計面倒。
しかも、Firefox では上手くいくのに、IE がダメってのがシバシバだし。
ともかく、なんとかうまくいった。
さて、もう寝よっと。
追記:2007.01.31
動作確認は、「Firefox 2.0」「IE6/IE7」「NN7.1」「Opera9.10」でオッケー。
Google map api を利用したサンプルとして、忍者ブログでも利用してみました。
追記:2007.02.01
Google map api で地図を BLOG に貼り付けるための FC2 BLOG用プラグインも書いてみました。
FC2 使ってる人はテンプレートの修正無しで、簡単に Google map api の地図が利用できるようになります。
追記:2007.02.02
「ブログパーツをさがせ」で、この地図ツールを紹介して頂きました。
はい、もちろん強引にメールを送りつけて(笑)
僕の説明よりはるかに分かり易い解説なんで、そちらも参照してみて下さい。
gaki
JJ氏は、すごいテク持ちなんですな!
今度いろいろ教えて頂こう!
そんときはヨロシク。
JJ
そうそう
新しい彼女が出来て2週間もすると
「あなたの右手ってゴッドハンドね」
って言われますから
(えーっと、嘘です)
一応これで飯食ってるんで(右手じゃないですよ)
いつでも聞いてちょ!
ありんこ
わぉ。すごいすごい!!ゴットハンドじゃなくてね。
でもサイトで試したけど、表示せず↓↓
スクリプトをheadに入れて、imgタグをつければよいってことだよね??
って、試したサイトがいけなかった。今見たらJISだった↓↓
しばらくしたら新しいサイト作ろうと思ってるんで、そっちで使わせてくださーい!!
ついでに、設置ができなかったらヘルプすると思いますが。。
あ、その前にブログじゃなくても全然使えますよね??
ありんこ
utf-8のサイトでちょっと試してみた。
Firefoxはできた!!!IEがぁぁぁぁ。。。
JJ
ゴットハンドもスゴイが、ゴットち…(自粛)
昨夜 FC2 用の google map api 表示用プラグインを書いたんで、FC2ならテンプレートを直接修正しなくても、プラグインを入れるだけで環境設定は完了できまっす。
↓
http://jjworkshop.com/blog/archives/2007/02/fc2blog.html
もちろん、BLOGでなくても、HTML を直接書いたページだろうが、ホームページビルダーで作ったページだろうか利用できます。
ヘルプはいつでもオッケーっすよ。
JJ
> utf-8のサイトでちょっと試してみた。
> Firefoxはできた!!!IEがぁぁぁぁ。。。
あり?
サイトのURL教えてくれたら確認してみますよ。
ここじゃなんなんで、メールくれたら見てみます。
↓
メール:info@jjworkshop.com
んー
忍者blogでも、プラグインでフリーエリアをひとつ用意して、
Fc2のプラグインと同様に設置したらでけました。
どこのブログにもあるんじゃないかな、こういうフリーエリアプラグイン。
でも空白のフリーエリアになってしまうことですし、
どうせなのでこの偉大なるJJworkshopに
リンクをつけておこうと思うのです。
どこをリンク先として扱ったらいいですか?
このエントリ?
地図ではなく、衛星写真のほうを表示させるには
どーしたらいいでしょうか?
JJ
ありゃ 忍者でもプラグインできましたか。
探したけどダメそうだったのであきらめたのですが、後で探してみよう。
リンクは好きなところでいいですよ。
衛星写真にするには、
map.setCenter(...
の後に(地図の位置を指定した後)、
map.setMapType(G_SATELLITE_TYPE);
と入れればいけると思います。
地図+衛星の場合は、パラメタを「G_HYBRID_TYPE」にします。
んー
「ユーザーがプラグインを作って公開できる」
という意味では、忍者にはなかったかもしれません。
デフォでユーザーが使えるプラグインに、フリーエリアってのありますよね?
「好きなようにバナーとか貼れよフリーダム!」なのが。
あそこに、件の「<HEAD>以下にこれを書け」を書き込んで設置できました、
という、考えても見れば普通の報告です。
ですが「無理矢理、ブログデザインのテンプレにねじ込もうとしてる人」も
結構いると思うので一応。もっと楽に設置できますよ、と。
衛星写真は試して見ます。
地図より「俺んち、上から見るとこんなの」「五稜郭はかわいいよね」とか
写真で出してみたい人もいると思うのです。
とにかくありがたやありがたや。
bonkura
初めまして、旅ブログを運営している者です。
この度、ちず窓からGoogle mapに変更しよう
と思っています。
そこでJJさんのイメージタグを作成を使用さ
せていただこうと考えています。
ここで質問なんですが通常地図、衛星写真の切
り替えのボタンを設置してみようと挑戦してみた
のですが、
map.addControl(new GMapTypeControl());
このコマンドを入れると、確かにボタンは生成
されるのですが文字が入っていないんですよね。
「地図」「航空写真」「地図+航空」という文字
が消えてしまいます。
色々原因を考えてみたんですが、こういう事に
は詳しくないため今一つわかりません。
どうかご教授お願いできたらと思います。
よろしくお願いいたします。
JJ
bonkura さん こんばんわ
map.addControl(new GMapTypeControl());
↑
これで良いと思いますがダメですか?
あとは、コントロールを入れる場所だけなんですが
var map = new GMap2(...
map.setCenter(...
の直後あたりに入れればオッケーだとおもいます
設置したサイト(URL)を教えて頂ければ、時間あるときに見ますよ
ここじゃなんなんで、メールくれたら見てみます
↓
メール:info@jjworkshop.com