Google MapsでJavaScriptのお勉強(PostGISと.NETもあるよ) その6

地図アプリケーションに機能を追加しようと思って、ちょっと遊んでいました(・∀・)


機能としては、まずなによりマーカーの追加機能が欲しくなって。
で、AjaxでリッチなUIをJavaScriptで一から書いていくのはさすがに面倒なので、いつものごとくAtlasのUpdatePanelを使おうと思ったのですが…。


aspxファイルにScriptManagerとUpdatePanelを追加、Buttonを配置して実行してみたところ、ボタンを押下するとクライアントサイドで「Unknown Error」というメッセージが表示されてしまいました(´・ω・`)


結論としては、scriptタグによるjsファイルのインクルードをheadタグ内からbodyタグへ移動したらエラーは発生しなくなったんですが。


最初、問題を切り分けようとしたときに、prototype.jsのインクルードを止めたらエラーが発生しなくなったので、Atlasとprototype.jsの併用に問題があるのかと思ってしまったんですが。
$()とかはAtlasにも定義されていますしね。


で、その時にprototype.jsを使用しないコードを書いたので、それに関するメモです(`・ω・´)


前述の通り、$()はAtlasにも定義されていますし、Enumeratorを使っている部分についてはfor文に書き換えたんですが。
残るはAjax.request()になるわけですが、Atlasを使ってAjaxのリクエストをベタに取得する方法については、こんな風なコードを書きました。

    var request = new Sys.Net.WebRequest();
    request.set_url( "WebServices/MapWebService.asmx/GetSpots" );
    request.set_body( "minX="  + sw.lng() +
                      "&minY=" + sw.lat() +
                      "&maxX=" + ne.lng() + 
                      "&maxY=" + ne.lat() );
    request.set_priority( Sys.Net.WebRequestPriority.High );
    request.completed.add( onRequestComplete );
    request.invoke();

そしてコールバックはこんな風に書いてみました。

function onRequestComplete(sender, eventArgs)
{
    var dom = GXml.parse( sender.get_xml().xml );

    ...
}

これ、コールバックのシグネチャが正しいのかよく分かってません(´Д`;)
動いたから「まあ、いいか」というレベルです。

応答についても、sender.get_xml().xmlとやってみたら、とりあえず応答ボディ部のxmlが取得できたからいいやというカンジで。
#eventArgsはnullが入ってくるし


この辺、日本語の資料があると、ちゃんと調べられるんですけどね。


で、結果として現在はprototype.jsを使用しないコードになってしまっています。
最初、prototype.jsを勉強しようと思って始めたプログラミングだったんですがね…(´Д`;)


まあ、ここに来るまでにprototype.jsの中身も読んだりしてますし、決して無駄では無かったということで(´ω`)