2008年7月2日

 少し前のGold Coastの記事より。Visual StudioにはJScriptのIntelliSense機能があります。Virtual Earth Map ControlやLive Messenger Libraryには、その機能を活用するためのJScriptファイルも公開されてます。

 これらは、とっても有用なんですけどJavaScriptが型の宣言がないため普通にコードを書いているとIntelliSenseの恩恵を受けれないことがしばしば。そこでGold Coastでは試行錯誤のうえのコーディング時のみIntelliSenseを有効にするための記述方法が投稿されてます。

 Virtual Earthの場合、VEMapをグローバル変数として持つ必要があるけど、インスタンス化するのはページ読み込み完了時になります。普通に書くと、

IntelliSense

こんな感じ。Visual Studioはfoo関数内ではVirtual Earth用のIntelliSenseが働きません。かといって宣言部に var map = new VEMap(); と書くとコーディング時はすべてIntelliSenseが働きますが、実行時に困ります。

 そこでBlogによると次の書き方がベターってことみたい。

IntelliSense

 map宣言部の下に条件文を付けました。実行時は、map = null; となるようにします。じゃあコーディング時はDESIGN_TIMEを宣言しておくのかというと、しません。どうやらVSは上記のように記述しておくとmapの型はVEMapと判断してくれるみたい。コーディング中と実行時に書き換えの必要もないので、かなり利便性アップです。IntelliSense機能を使うときは覚えておきましょう。今回のはグローバル変数に対してでしたが関数内の変数に対しても有効です。詳しくは元ネタへ。

 さて、Virtual Earthは以上でよかったのだけど、Messenger Libraryになると複雑です。Messenger Libraryは名前空間を意識した書き方になっているのでちょっと工夫が要ります。私も試行錯誤中なのでベストかはわからない。

IntelliSense

 こんな感じです。Messenger Libraryの記述方法で名前空間とクラスを作り、自作クラスの中にMicrosoft.Live.Messenger.Userオブジェクトを追加してます。If文の2か所がIntelliSense用に書いたものです。とりあえずうまくいく感じ。もっとスマートなのがあれば教えてください。書いておかないとMessenger Libraryの記述方法では ほとんどIntelliSenseが働きません。これでも恩恵受けれない箇所がいろいろと出てきます。イベントハンドラなんかが多いので。

posted @ 23:55 | Feedback (1)

 Virtual Earth Wrapper for SilverlightというものがCodePlexにて公開されています。略してVIEWSというらしいです。Virtual Earth Map ControlをSilverlight用にラップしたものみたいですね(そのまんま!)。これでC#やVB.NETでVirtual Earthが操作できちゃいます。

 MIX08で発表されたVirtual Earth Map Controlとはまた異なって、これはマイクロソフトリサーチの人が内部プロジェクトを公開したもののようです。先日はWPFのラッパーも紹介したし、Deep Zoomプロジェクトもあるし、Virtual Earthはいろいろ作られていますね。本家からの情報はないようですけど。

 このVIEWS、現在CodePlexのリリースからはライブラリ(DLLとjsファイル)のみのダウンロードになってます。サンプルは、Channel 9からダウンロードできます。始め方はGetting Startedにあります。

 実際にVisual Studio 2008 用 Microsoft Silverlight Tools Beta 2をインストールして、Silverlightプロジェクトを作成してみたのですが、サンプルは動かせたけどゼロから使うのが良くわかんねー。SilverlightのXAMLのビハインドコードからHTMLのid属性値が参照できてないみたいなんだけどわからんなー。まずはSilverlightの基本からですね。

(via Gold Coast : Virtual Earth Wrapper for Silverlight (VIEWS)

 

7/3 21:30 追記 コメント欄に英語で返信できないため。

Jared

Thank you for your reply and kindness. The sample code on Channel9 works fine. A programming using Silverlight is a first for me. So, I had trouble with the coding. If I notice a something or have a question, I send it to the CodePlex.
Thank you!

(I can't reply to the comment form. Maybe, my message is marked as spam.)

posted @ 23:54 | Feedback (133)