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の中身も読んだりしてますし、決して無駄では無かったということで(´ω`)