2008年4月8日

 Virtual Earth SDKで正式にはIPアドレスから位置情報の取得はサポートしていませんが、次のアドレス http://maps.live.com/WiFiIPService/locate.ashx を利用して取得が可能です。ただし特定のIPアドレスを指定して位置情報を取得という使い方はできません。

 上のURL先にアクセスすると

SetAutoLocateViewport(35.761944, 139.733194, 7, false, "お使いのコンピュータの IP アドレスから場所を特定しました。");

というような文字列が返ってきます。「35.761944, 139.733194」のところが経緯度になってます。SetAutoLocateViewportという名前の関数を呼び出す形になっているので、JavaScriptでこの名前の関数を用意しておいて、コールバックしてもらうというスンポーです。

 たとえばこんな感じ。第3引数はたぶん ちょうどよいズームレベルで、第4引数はよくわかりません。

function SetAutoLocateViewport(latitude, longitude, lvl, bl, msg) {
    var latlong = new VELatLong(latitude, longitude);
    var pin = new VEShape(VEShapeType.Pushpin, latlong);
    pin.SetTitle(msg);
    pin.SetDescription(latitude + ', ' + longitude);

    map.AddShape(pin);
    map.SetCenterAndZoom(latlong, lvl);
}

 もし何らかのエラーが発生した場合は、SetAutoLocateViewportではなく、ShowMessageを呼ぶ文字列が返ってくるようです。

function ShowMessage(msg) {
    alert(msg);
}

 MSDNライブラリには、AjaxによりURLにアクセスし 得られた文字列をevalするという記事がありますが、もはや動かないコードのようです。もっと単純にscriptタグで参照するようにすれば動きます。下のコードは、ページの最後にマップを初期化する自作関数pageLoadedを呼び出した後に挿入しています。

<body>
<div id='myMap' style="position:absolute; width:400px; height:400px;"></div>
<script type="text/javascript">
    pageLoaded();
</script>
<script type="text/javascript" src="http://maps.live.com/WiFiIPService/locate.ashx"></script>
</body>

 実行結果は以下の感じ。クリックすると実際のページに移動します。

サンプル

 日本というのはあってるのだけどねー。ちなみに、英語のLive Mapsにはこの機能が付いています。Optionsから「Locate Me」ボタン。

Locate Me

posted @ 21:06 | Feedback (141)

 

 ↑郵便番号が出ました。日本郵便のページにリンクされてます。

 ダメですねぇ。日本郵便のWebサイトと同じ結果。

posted @ 20:18 | Feedback (3)

 1週間ぐらい前にWordPress 2.5がリリースされました。私もWordPressユーザなのでアップグレードしないといけませんね。とかいうと古いバージョン使用しているのがバレバレですが。

 以前に日本語のWordPressのサイトを見た時は、情報がほとんどない状態だった気がしますが、今みると2.5リリースの翻訳までされていました。素晴らしい。

 同時期にVirtual Earth Plug-in for WordPressというWordPress用のVirtual Earthのプラグインも紹介されていたので、あわせてチェック。WordPress 2.5にも対応しています。

posted @ 0:21 | Feedback (5)