GoogleAPI~住所から緯度経度を取得する(その2)~

前回は、Google MAPSのWeb APIを使用して、緯度経度を含んだ情報をXML形式で取得する方法を紹介しました。
前回の情報はmy-hobby : GoogleAPI~住所から緯度経度を取得する(その1)~で確認できます。

今回はGoogleAPIを使用して取得したXMLの仕様を確認し、そこから緯度経度を取得してみたいと思います。

緯度経度を取得するに当たり、サービス – Google Maps API – Google Codeを参考にしました。
なおリンク先の説明はJSONになってますが、実際に動作テストした結果、リンク先に記載されている内容と合致していたので、今回はこれを基にプログラムを作成しました。

その内容から見るべきXPATHは以下の2つと考えました。
1.kml/Response/Status/code
リターンコードを示しています。
「200」が正常終了。それ以外は今回の処理では異常終了とみなす事にします。
リターンコードの種類についてはGoogle Maps API リファレンス – Google Maps API – Google Codeに記載されています。

2.kml/Response/Placemark/Point/coordinates
リクエストされた住所の 緯度、経度、高度 をカンマ区切りで示しています。
※高度は常に0が返されます。

上記内容を踏まえてWindowsフォームより入力した住所に対して、GoogleAPIを使用して緯度と経度を求めます。
■入力フォーム

■ソースコード

[vbnet]
Imports System.Xml
Imports System.Web
Public Class Form1

Private Sub btn_Search_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Search.Click

Dim xNode As XmlNodeList
Dim Enc_Address As String
Dim APIKey As String = "(各自で取得したAPIキー)"
Dim RequestUrl As String
Dim GeoCode() As String

If txt_Address.Text = "" Then
Exit Sub
End If

Enc_Address = HttpUtility.UrlEncode(txt_Address.Text)
RequestUrl = "http://maps.google.com/maps/geo?&q=" & Enc_Address & "&output=xml&key=" & APIKey

Dim xDoc As XmlDocument = New XmlDocument
xDoc.Load(RequestUrl)

Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(xDoc.NameTable)
nsmgr.AddNamespace("gmap", "http://earth.google.com/kml/2.0")
xNode = xDoc.SelectNodes("/gmap:kml/gmap:Response/gmap:Status/gmap:code", nsmgr)

If xNode.Item(0).InnerText <> "200" Then
Exit Sub
End If

xNode = xDoc.SelectNodes("/gmap:kml/gmap:Response/gmap:Placemark/gmap:Point/gmap:coordinates", nsmgr)

GeoCode = Split(xNode.Item(0).InnerText, ",")
txt_Keido.Text = GeoCode(0)
txt_Ido.Text = GeoCode(1)

End Sub
End Class[/vbnet]

■実行結果

ちなみにGoogleAPIの仕様上は、施設名などでも緯度経度の検索は可能ですが、複数ヒットした場合、このプログラムでは考慮されていません。
複数ヒットの場合は、最初のデータが使用されます。

※施設名(東京タワー)で検索した場合

次回は2つの住所から、2点間のおおよその距離を求める方法にチャレンジしてみたいと思います。

GoogleAPI~住所から緯度経度を取得する(その1)~

郵便番号構想を始めてから、住所に関する事にどっぷりと浸かっています。
郵便番号以外にも、住所から何か検索できるものは無いか・・・
住所を使って他にも出来る事は無いか・・・

ふと2つの住所を使って、2点間の距離を求める事が出来たら面白いのではないか?
なんて事を考えて見ました。
ただ住所だけでは2点間の距離を求めることは出来ないので、住所からある情報を検索してそこから2点間の距離を求める方法を考えました。

それは緯度と経度です。
ただ、住所から緯度と経度を検索する事なんで出来るのでしょうか?

出来ます。
それはGoogle MAPSです。
Web APIとしてGoogle MAPSがWeb APIを公開していました。

ただし、GoogleのWeb APIを使うためには、Google APIキー(ライセンスキーの様なもの)が必要という事なので、
先ずはGoogle APIキーの取得を行ないます。

Google APIキーは以下のサイトより入手できます。
Google Maps API – Google Code

より詳細な取得方法はGeekなぺーじ : Google MAPS API keyを取得するが参考になると思います。
※このページではJavaScriptによる緯度経度の取得方法も記載されています。
今回の記事を作成するにあたっても、参考にさせていただきました。

JavaScriptで実装する場合は、専用のオブジェクトが用意されていますが、
VB.netで実装する場合はURIにパラメータを直接指定して、
その戻り値(レスポンス)を元に緯度経度を取得する形式となります。
詳細はこちら
今回は戻り値をXML形式で取得し、そこから緯度経度を抽出する方式とします。

先ずはGoogleAPIにリクエストするURIの仕様は以下の通りです。

ジオコーディングとは、住所 (「1600 Amphitheatre Parkway, Mountain View, CA」など) を地理座標 (緯度37.423021、経度 -122.083739など) に変換する処理のことです。地理座標を使用して、マーカーを配置したり地図の位置決めを行うことができます。Google Maps API は、HTTP 要求を経由して直接アクセスするか、または GClientGeocoder オブジェクトを使用してアクセスできるジオコーディング サービスを備えています。

(中略)

HTTP 要求経由のジオコーディング
サーバー側スクリプトを使用して Maps API ジオコーダに直接アクセスするには、URI
に次のパラメータを指定して http://maps.google.com/maps/geo? に要求を送信します。
q — ジオコーディングする住所。
key — API キー。
output — 生成される出力の形式。xml、kml、csv、または json を指定できます。

※ジオコーディングする住所はURLエンコードが必要です。

【例】住所:日本東京都港区芝公園4丁目2-8とした場合
http://maps.google.com/maps/geo?&q=%93%8C%8B%9E%93s%8D%60%8B%E6%8E%C5%8C%F6%89%80%82S%92%9A%96%DA2-8&output=xml&key=(各個人で取得したAPIキー)

試しにこれをブラウザのアドレスに直接入力すると、
以下の様な結果が表示されます。

これをプログラムで読み込むには以下のコードを記述します。
■入力フォーム

■ソース

[vbnet]
Imports System.Xml
Imports System.Web

Public Class Form1
Private Sub btn_Search_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Search.Click

Dim Enc_Address As String
Dim APIKey As String = "(各個人で取得したAPIキー)"
Dim RequestUrl As String

If txt_Address.Text = "" Then
Exit Sub
End If

Enc_Address = HttpUtility.UrlEncode(txt_Address.Text)
RequestUrl = "http://maps.google.com/maps/geo?&q=" & Enc_Address & "&output=xml&key=" & APIKey

Dim xDoc As XmlDocument = New XmlDocument

xDoc.Load(RequestUrl)
Console.Write(xDoc.InnerXml)

End Sub
End Class[/vbnet]

■デバッグ

[xml]
<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.0"><Response><name>日本東京都港区芝公園4丁目2?8</name><Status><code>200</code><request>geocode</request></Status><Placemark id="p1"><address>4丁目2 8 Shiba Park, Minato, Tokyo, Japan</address><AddressDetails Accuracy="8" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>JP</CountryNameCode><CountryName>Japan</CountryName><AdministrativeArea><AdministrativeAreaName>Tokyo</AdministrativeAreaName><Locality><LocalityName>Minato</LocalityName><DependentLocality><DependentLocalityName>Shiba Park</DependentLocalityName><Thoroughfare><ThoroughfareName>4丁目2?8</ThoroughfareName></Thoroughfare></DependentLocality></Locality></AdministrativeArea></Country></AddressDetails><ExtendedData><LatLonBox north="35.6617821" south="35.6554869" east="139.7485585" west="139.7422633" /></ExtendedData><Point><coordinates>139.7454109,35.6586345,0</coordinates></Point></Placemark></Response></kml>[/xml]

XmlDocumentオブジェクトを使用すると、非常に簡単に結果を取得する事が出来ます。
次回は取得したXML情報から、緯度と経度を取得する方法を紹介します。

郵便番号検索サービス構想~住所データの仕様~

前回はサラッと流しましたが、改めて郵便番号データの説明 – 日本郵便のサイトより、郵便番号データの仕様を確認したいと思います。
●先ずは前提条件(データの範囲)

1.郵便番号は、町域(町名から○丁目を除く部分、および大字)に設定しており、小字または通称には原則として設定していない。
2.また、大口事業所、私書箱および料金受取人払等へ個別の郵便番号を設定している。

日本郵便のサイトには上記の2点が「郵便番号の設定範囲」として記載されています。
※それぞれの意味はこちらを参照して下さい。大字小字
>>1については、このデータを元に検索エンジンを作るので、この仕様は受け入れざるを得ません。
しかしそもそも「小字または通称」にも郵便番号って設定されているのでしょうか?
調べていたら、郵便番号制マニュアル - 郵便番号にその答えがありました。
このサイトの「(3) 郵便番号で表す範囲(図1参照)」の「イ」に記載されている内容を見ると、そもそも「小字又は通称」には郵便番号を設定していないそうです。
ふ~~~ん。。。なるほど!
という事は、「小字または通称」は住所データに含まれていないのではなく、そもそも存在しない事になるので、1については問題ありません。
>>2については日本郵便より提供されている郵便番号データは大きく分けて2種類存在します。

1.事業所の個別郵便番号
2.一般的な住所の郵便番号

今回作成する郵便番号検索サービスは「住所の郵便番号」に対して行います。
「事業所の個別郵便番号」は現時点では対応の予定はありませんが、時間があれば対応していきたいと思います。
更に、「住所の郵便番号」は以下の2種類が存在します。

1.読み仮名データの促音・拗音を小書きで表記しないもの(ホツカイドウ)
2.読み仮名データの促音・拗音を小書きで表記するもの(ホッカイドウ)

これらの内容をまとめると、住所データは以下の様な構成になっている事になります。
住所データ
┣事業所の個別郵便番号
┗一般的な住所の郵便番号
┣読み仮名データの促音・拗音を小書きで表記しないもの
┗読み仮名データの促音・拗音を小書きで表記するもの(★)
今回は★のデータを使用しようと思います。
それは何故かって?
検索結果に読み仮名を表示する時に、正しい読み仮名で表示させたいからです。
その他細かな説明は郵便番号データの説明 – 日本郵便にて確認できます。
●次に住所データの仕様
住所データの各カラムの仕様は以下の通りです。 (一部注意事項は省略しています)

1.全国地方公共団体コード(JIS X0401、X0402)……… 半角数字
2.(旧)郵便番号(5桁)……………………………………… 半角数字
3.郵便番号(7桁)……………………………………… 半角数字
4.都道府県名 ………… 半角カタカナ
5.市区町村名 ………… 半角カタカナ
6.町域名 ……………… 半角カタカナ
7.都道府県名 ………… 漢字
8.市区町村名 ………… 漢字
9.町域名 ……………… 漢字
10.一町域が二以上の郵便番号で表される場合の表示(「1」は該当、「0」は該当せず)
11.小字毎に番地が起番されている町域の表示(「1」は該当、「0」は該当せず)
12.丁目を有する町域の場合の表示 (「1」は該当、「0」は該当せず)
13.一つの郵便番号で二以上の町域を表す場合の表示(「1」は該当、「0」は該当せず)
14.更新の表示(「0」は変更なし、「1」は変更あり、「2」廃止(廃止データのみ使用))
15.変更理由 (「0」は変更なし、「1」市政・区政・町政・分区・政令指定都市施行、「2」住居表示の実施、「3」区画整理、「4」郵便区調整等、「5」訂正、「6」廃止(廃止データのみ使用))
※別途細かな注意事項がありますが、詳細は郵便番号データの説明 – 日本郵便にて確認できます。
いくつかある注意事項の中で、特に注意すべき内容が以下の通り。
1.文字コードには、MS漢字コード(SHIFT JIS)を使用している。
※文字セットとして、JIS X0208-1983を使用し、規定されていない文字はひらがなで表記している。
2.全角となっている町域名の文字数が38文字を超える場合、また、半角カタカナとなっている町域名のフリガナが76文字を越える場合には、複数レコードに分割している。

※その他注意事項については、こちら
1について、今どき「SHIFT JIS」は厳しい。せめてUTF-8にしてほしい感じです。
しかも、「SHIFT JIS」で記載できない文字は「ひらがな」になってしまうとの事。
つまりブラウザを「UTF-8」対応しても、住所データは「ひらがな」なので、「SHIFT JIS」で表現できない住所が存在した場合に検索にヒットしないことになります。
件数は少ないと思いますが、解決すべき課題が1つ増えました。
次に2について・・・
これも今どき38バイトはある意味スゴイ!
このデータを管理しているシステムは、それなりに古い仕様で作られていると予想されます。
そんな事は良いとして、これでは正しく検索できないので、複数レコードを1レコードにまとめないといけません。
実際のデータを見てみると、複数レコードの場合は、同じ郵便番号(0660005)で連続してデータが存在しています。
実際のデータはこんな感じ↓(色字の部分です)
01224,”066 “,”0660005″,”ホツカイドウ”,”チトセシ”,”キヨウワ(88-2、271-10、343-2、404-1、427-“,”北海道”,”千歳市”,”協和(88-2、271-10、343-2、404-1、427-“,1,0,0,0,0,0
01224,”066 “,”0660005″,”ホツカイドウ”,”チトセシ”,”3、431-12、443-6、608-2、641-8、814、842-“,”北海道”,”千歳市”,”3、431-12、443-6、608-2、641-8、814、842-“,1,0,0,0,0,0
01224,”066 “,”0660005″,”ホツカイドウ”,”チトセシ”,”5、1137-3、1392、1657、1752バンチ)”,”北海道”,”千歳市”,”5、1137-3、1392、1657、1752番地)“,1,0,0,0,0,0
であれば仕様は簡単で、郵便番号が連続して複数存在した場合は、前のレコードを繋げる様な処理にすれば、1つのレコードに収まります。 (以下の様な感じ)
01224,”066 “,”0660005″,”ホツカイドウ”,”チトセシ”,”キヨウワ(88-2、271-10、343-2、404-1、427-“,”北海道”,”千歳市”,”協和(88-2、271-10、343-2、404-1、427-3、431-12、443-6、608-2、641-8、814、8425、1137-3、1392、1657、1752番地)“,1,0,0,0,0,0
※1つのレコードの収めないと、例えば「北海道千歳市協和427-3」の郵便番号を検索する際に、ものすごく複雑な処理を書かなければいけなくなってしまいますので・・・
ただ気になるのが、No13の「一つの郵便番号で二以上の町域を表す場合」です。
これに該当する(値が1になっている)データを見てみると、以下の様な感じになっています。(赤字の部分です)
07408,”96931″,”9693102″,”フクシマケン”,”ヤマグンイナワシロマチ”,”ニシミネ”,”福島県”,”耶麻郡猪苗代町”,”西峰“,0,0,0,1,0,0
07408,”96931″,”9693102″,”フクシマケン”,”ヤマグンイナワシロマチ”,”ネコイシヤマ”,”福島県”,”耶麻郡猪苗代町”,”猫石山“,0,0,0,1,0,0
07408,”96931″,”9693102″,”フクシマケン”,”ヤマグンイナワシロマチ”,”ハヤマ”,”福島県”,”耶麻郡猪苗代町”,”葉山“,0,0,0,1,0,0
このデータは見るからに1行のデータとして独立しています。
これは郵便番号が同じだからと言って、連続したレコードを繋げる事は出来ません。
よってこれらのケースは除外しつつ、複数行データを単一データに加工します。
●最後に
郵便番号データの説明 – 日本郵便の一番下に以下の様な記載があります。

郵便事業株式会社は著作権を主張しません。自由に配布していただいて結構です。

という記載があります。
なんと寛大な・・・
要はこのデータを煮ようが焼こうが好きにしてよいという事です。
そういう事であれば、自由に使わせて頂きます!
とりあえず他にも色々と課題が出てきそうですが、日の目を見るまで頑張ります。

郵便番号検索サービス構想~最新住所データの取得~

検索プログラムを作る前に、先ずは最新の全国の住所データが必要です。
全国の住所データを一覧で配布しているところなんてあるのでしょうか?
むか~し、郵政省のページから拾ってきた記憶があるのですが、
今や郵便局も民営化されてしまったので、もう無いだろうと思い郵便局のページにアクセスしてみたら、
なんとありました!
しかも毎月更新されています!!!(今も現役という事ですね)
郵便番号データダウンロード – 日本郵便
なんか化石を掘り当てた気分です。

さっそくこれをダウンロード!
全国版で1.7MB弱、意外と容量は少ないです。

早速解凍して中身をチェック!

01101,”060 “,”0600000″,”ホツカイドウ”,”サツポロシチユウオウク”,”イカニケイサイガナイバアイ”,”北海道”,”札幌市中央区”,”以下に掲載がない場合”,0,0,0,0,0,0
01101,”064 “,”0640941″,”ホツカイドウ”,”サツポロシチユウオウク”,”アサヒガオカ”,”北海道”,”札幌市中央区”,”旭ケ丘”,0,0,1,0,0,0
01101,”060 “,”0600041″,”ホツカイドウ”,”サツポロシチユウオウク”,”オオドオリヒガシ”,”北海道”,”札幌市中央区”,”大通東”,0,0,1,0,0,0
01101,”060 “,”0600042″,”ホツカイドウ”,”サツポロシチユウオウク”,”オオドオリニシ(1-19チヨウメ)”,”北海道”,”札幌市中央区”,”大通西(1~19丁目)”,1,0,1,0,0,0
01101,”064 “,”0640820″,”ホツカイドウ”,”サツポロシチユウオウク”,”オオドオリニシ(20-28チヨウメ)”,”北海道”,”札幌市中央区”,”大通西(20~28丁目)”,1,0,1,0,0,0
01101,”060 “,”0600031″,”ホツカイドウ”,”サツポロシチユウオウク”,”キタ1ジヨウヒガシ”,”北海道”,”札幌市中央区”,”北一条東”,0,0,1,0,0,0

見た感じは昔の仕様と変わっていないようです。

とりあえず本当に仕様が変わっていないか、住所データの仕様と検索プログラムのソースを見比べてみました。
が、検索プログラムのコメントが乏しく、調査は難航・・・

まあ細かな仕様は後回しにして、最新の住所データをアプリに取り込んで早速郵便番号検索開始!

まだweb化が出来ていないので、ローカルPCで実行した結果の画像で報告します。
先ずはgoogleマップでヒットした東京タワーの住所から郵便番号を検索

東京都港区芝公園4丁目2-8

正しい郵便番号がヒットしました。
ほっと一息・・・

これが正しい郵便番号かどうかは、郵便局のサイトから、
郵便番号から住所検索を行なって確認しました。郵便局のサイトなので間違いないでしょう。。。

とりあえず「郵便番号検索」でググって、上位にある同様の郵便番号検索サイト
郵便番号検索 – 日本郵便
郵便番号を検索 -goo 郵便番号
郵次郎: 郵便番号検索サービス
郵便番号検索案内 ゆうびんねっと
googleの郵便番号検索用ガジェット

より比較してみると、
なんとこの住所でヒットしたのはたったの1サイトのみでした。
これは初っ端からなかなかの好成績!
※郵便局のサイトがヒットしなかったのは、ちょっと驚きでした。

とりあえず、残った1サイトを今後のベンチマークとし、検索性能のアップに取り組もうと思います。

郵便番号検索サービス構想

一児の父となってじっくり部屋でパソコンをする機会も少なくなり、最近は子供の子守をしながらノートパソコンを使ってちょこちょこブログを書く日々が続いています。
そんな中、昔使っていたディスクトップPCのフォルダ整理をしていたら、郵便番号検索のアルゴリズムを調査・研究していた時の資料(プログラム)が出てきました。
しかもMS-Access。。。
郵便番号から住所を検索する、というのは一般的にありますが、住所から郵便番号を検索する機能はあまりありません。
ただ理屈は簡単で、郵便番号から住所が検索できるのであれば、その逆も出来るのではないか、といった感じです。
実際郵便番号を検索するサイトはいくつか存在し、有名なのは「郵便番号検索」でググって、最上位にヒットする公官庁(郵政省)のページにある郵便番号検索です。
ただこのサイト、実際に自分の住所を入力して試してみると分かりますが、ほとんどのケースで郵便番号が検索されません。
これなら独自に作った方がより検索制度の高い機能が作れるのではないか、という思いつきで始めたのがきっかけでした。
今から5年以上も前の話です。まだ世の中を知らない青二才の無謀な思い付きでした。。。
ただ恐る恐るそのプログラムを実行してみると、なかなかの高機能である事が判明しました。
これを今の自分の技術力を使って改造すれば、それなりのものになるのではないか?
当時はクライアントサーバ型のシステムアーキテクチャしか知りませんでしたが、今はWebの技術も多少なりはあるし、この機能をWebサービスとして提供すれば、それなりに自分の技術を世間にアピールできるのではないか?
ちょっと夢が膨らみすぎましたが、こつこつとやっていけば、それなりの結果は出ると思ったので、「郵便番号検索サービス構想」を発足してみようと思います。
ただいきなり全部は出来ないので、以下の順番で進めて行こうと思います。
1.検索エンジンの性能向上
とりあえず、「郵便番号検索」でググって、上位にヒットする郵便番号検索サイトよりも高機能の検索エンジンを構築する。
2.郵便番号検索機能をweb上に公開
1が達成できたら、レンタルサーバを借りて、Web上にこの機能を公開する。
3.Webサービスの提供開始
2が出来たらWebサービスとして他のWebアプリからも連携できるようにする。
かなり妄想族と化していますが、先ずは検索エンジンの性能向上を目的として、気長にやって行こうと思います。
今の時代、郵便番号検索なんてかなり枯れたサービスですが、枯れたものに新たなトレンドをブレンドして、新たなサービスを構想するなんてのも面白いかと思います。
まだ、具体的な事は何も紹介していませんが、気長に付き合って下さい。

知ってると便利googleマップの使い方2

googleマップの使い方第2弾です。

前回のブログではルート・乗換案内の画面(出発地点は未定)を出す方法を紹介しましたが、
新たに乗換案内(出発地点を決めてかつそのルートをデフォルトで表示する)画面を表示する方法を見つけましたので紹介したいと思います。
前回の記事はこちら:知ってると便利googleマップの使い方

ちなみに前回はgoogleマップのURLに「f=d」を付ける事で、以下の様な画面をブラウザ上に表示させることが出来ました。

今回は以下のパラメータを付加する事で、ルートを決めた状態で表示させることが出来ます。
・saddr=(出発地点)
・daddr=(到着地点)
・date=(出発日 or 到着日)
・time=(出発時刻 or 到着時刻)
・ttype=dep:date、timeが出発を示す。ttype=arr:date、timeが到着を示す。

試しに到着地点を「東京タワー」、出発地点を「東京駅」にして出発日時を11月9日 10:00にして、乗換案内を表示させるURLは以下のようになります。
http://www.google.co.jp/maps?ie=UTF8&f=d&dirflg=r&saddr=%E6%9D%B1%E4%BA%AC%E9%A7%85&daddr=%E6%9D%B1%E4%BA%AC%E9%83%BD%E6%B8%AF%E5%8C%BA%E8%8A%9D%E5%85%AC%E5%9C%92%EF%BC%94%E4%B8%81%E7%9B%AE2-8%E2%80%8E&ttype=dep&date=11%2F9&time=10:00&z=14
※東京タワーは複数の関連施設がヒットしない様に、住所での登録にしました。

これを自分のブラウザに地図を貼り付けるとこんな感じになります。

乗換案内はこの様な感じになりますが、先日スタートしたルート案内サービスについては、自分が調べた限りまだパラメータが用意されていないようです。
ルート案内が出来るようになれば、電車以外で自動車からの案内も出来るようになるので、さらに使い勝手がよくなりますね。
便利な世の中になったものです、はい。。。

知ってると便利googleマップの使い方

前回に続き、googleシリーズ第2弾です。
今回はgoogleマップについて、紹介します。
googleマップは、最近ではカーナビとの連動サービスもスタートするなど、飛躍的に進化を遂げているツールです。
※興味のある方の為の関連記事:
カーナビ連動も、グーグルがルート案内サービス開始 - @IT

※過去のgoogleシリーズを見たい方はこちら:こちら

1.自分のサイトに地図を貼り付ける方法
これは簡単、googleマップを開いて右端にある「リンク」をクリックすれば、htmlのコードが表示されるので、下段のhtmlをコピーして自分のソースに貼り付ければOK。
試しに「東京タワー」を検索してその結果の地図を、自分のサイトに貼り付けようとする時の手順はこんな感じです。

これを自分のwebサイトのhtmlに貼り付けると、こんな感じになります。

しかしこの様なやり方だと、東京タワー以外の施設も同時に検索されてしまいます。
複数ヒットしてしまっては、見る側も分かりません。
そこで名称ではなく、住所で検索してみます。
東京タワーの住所である「東京都港区芝公園4丁目2-8」を入力して検索を行なうと、マークは1つに絞られますが、今度は「東京タワー」の文字が表示されなくなってしまい、ぱっと見た感じではどこの施設を示しているのかがわかりません。

そこで、
「東京都港区芝公園4丁目2-8 (東京タワー)」
と入力すると、名称と住所が自動的に噴出しに表示されて見やすい感じになります。
※施設名を()で囲むのが重要です。
()で囲むと、それが噴出しの名称になります。
これで地図上にピンポイントで施設を表示させる事が出来ます。

ポイントも絞られて、しかも吹き出しまで出るので、見る側としてはとても見やすいサイトになります。

2.地図をカスタマイズして表示する方法
更に上記で紹介した以外でURLのパラメータを変更する事で、色々カスタマイズ可能です。
カスタマイズ可能なパラメータの代表的なものをいくつか紹介します。
・hl:hl=jaと指定すると、日本語で表示されます。
ちなみに英語は「en」です。

・q:q=(地名、住所などのキーワード)を指定すると、キーワード検索した状態と同じ結果になります。
1で紹介したケースです。
ただしこのパラーメータはURLエンコードで入力する必要があります。
URLエンコードは以下のスクリプトを、ブラウザのアドレス欄に貼り付ければ表示されます。
[javascript]

javascript:void(prompt(”,encodeURI("東京タワー")));[/javascript]
※ただしこのjavascriptは指定した文字をUTF-8に変換した後に、URLエンコードされます。

・f:f=dと指定すると、ルート・乗換案内が画面左側に表示されます。
見る側にとっては、地図とルート・乗換案内が同じ画面で出来るので非常に便利です。
http://maps.google.co.jp/maps?f=d&hl=ja&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E6%B8%AF%E5%8C%BA%E8%8A%9D%E5%85%AC%E5%9C%92%EF%BC%94%E4%B8%81%E7%9B%AE2-8+(%E6%9D%B1%E4%BA%AC%E3%82%BF%E3%83%AF%E3%83%BC)&iwloc=addr
ただし、自分のサイトに地図を貼り付けた場合は機能しません。

・ll:ll=(緯度),(経度)を指定する事で、その地点の地図を表示する事が出来ます。
http://maps.google.co.jp/maps?ll=35.658634,139.745411&hl=ja&q=(%E6%9D%B1%E4%BA%AC%E3%82%BF%E3%83%AF%E3%83%BC)
緯度、経度はこちらのサイトから検索する事が出来ます。
gecoding
※webAPIも提供されているので、手作業で探す手間が省けます。
住所が無い場合はどうするかって?
1で紹介した様なやり方は出来ないですし、gecodingを使っても緯度、経度も調べる事は出来ません。
その様な場合は、googleマップ上で目的の地点まで地図を移動させて、ブラウザのアドレス欄に以下のコードを入力すれば、現在地の緯度、経度を表示する事が出来ます。[javascript]javascript:void(prompt(”,gApplication.getMap().getCenter()));[/javascript]

・z:z=(0~20)と指定する事で、デフォルトのズームを指定する事が出来ます。
指定できる範囲は0(広域)~20(狭域)になります。
地域によって20を指定しても見れない場合があります。
http://maps.google.co.jp/maps?z=18&hl=ja&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E6%B8%AF%E5%8C%BA%E8%8A%9D%E5%85%AC%E5%9C%92%EF%BC%94%E4%B8%81%E7%9B%AE2-8+(%E6%9D%B1%E4%BA%AC%E3%82%BF%E3%83%AF%E3%83%BC)&iwloc=addr
この辺の情報を知っておけば、見る側の視点に立った地図をwebサイトに掲載できるのではないでしょうか?

知ってると便利google検索のこんな機能

googleといえば、言わずと知れた世界最高の検索エンジンです。
インターネットやる時は先ずgoogleにアクセスして、そこからフリーワード検索といった感じで、インターネットを利用する人も多いでしょう。
ググる」なんて用語もある様に、いまやgoogleは自分の好きなホームページを探す為の重要なツールとなっているのです。

そこで今回はgoogleの一歩進んだフリーワード検索のテクニックを紹介します。
これを知っていれば、より自分の探したいサイトを見つける事が出来るかもしれません。

1.基礎中の基礎
 当たり前の事なので省略(笑)

2.中級編
・絞込みから除外する機能
例えばapple社のパソコンについて色々調べたいと思い、「マック」とキーワードを入力して「ググる」と、ハンバーガーに関するコンテンツがヒットしてしまいます。
そんな時。キーワードの頭にマイナス「-」を付けると、そのキーワードに関連するページは除外されます。

今回の例で言えば、「マック -ハンバーガー」と入力すると、「ハンバーガー」を含むコンテンツは除外されます。

普通コンテンツの絞込みを行う場合は、キーワードを増やしていって絞り込むのが普通ですが、この様に「-」を付けた絞込みも時には役立つかもしれません。

・公官庁のHPに限定して検索をしたい
公官庁のHPから確実な情報を知りたいけど、普通に「ググる」と公官庁以外のサイトもヒットしてしまう。
とは言っても公官庁のHPは分かりづらい、またどこの公官庁のHPを見ればよいか分からない、そんなケースがあったとします。
そのような場合は、キーワードの中に、「site:go.jp」と入力すると、公官庁のページに限定して検索されます。

例えば「憲法第9条 site:go.jp」といった感じです。
これはキーワードに「site:」を使うと、そのサイトに限定して検索に行く機能で、別に公官庁だけでなく、
こんなキーワード「温泉 site:http://www.rakuten.co.jp/」を入れると、楽天に行かなくても楽天のコンテンツだけが表示されます。
これなら楽天で検索したほうが分かりやすい、という意見もありますが、いくらでも応用はあるので、逆になんかよい使い方があったら教えてください。

・テンプレートを検索したい
例えば、自分で請求書を書く事になったけど、最初から作るのは面倒くさいから、なんかいいテンプレートをググりたい場合があったとします。
普通であれば、「請求書 テンプレート」といったキーワードを入力して探すものですが、これだとテンプレート以外のサイトもヒットしてしまいます。
そんな時、キーワードに「請求書 filetype:xls」と指定してググると、ナント「請求書」という文言を含むExcelファイルだけが検索されます。
これなら、今まで時間をかけて探していたものがずっと速く見つけることが出来るのではないでしょうか?

3.上級編
(調査中です)
すばらしい機能が見つかるか、もしくはgoogleが新たに開発してくれれば、また掲載したいと思います。

今回は3つの機能を紹介しましたが、これらの機能を使えば、よりgoogleを有意義に使うことが出来るのではないでしょうか?
百聞は一見にしかず、ぜひ皆さんも試してくださいね。