y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

MapGuide:geocodingを使った地点検索

ASP.NETサンプルアプリでは、geocode.usを使って、アメリカの州を検索しているが、ここは日本人らしく(?)、国土数値情報を背景にして、日本の住所で検索・表示してみたい。
ということで、www.geocoding.jpのWebAPIに接続してみると、案外さくっといっちゃいました。
(座標変換とか、面倒なことがあるんじゃないかと想像していた)


例によって、サンプルの改造という手段でお勉強しているわけであるが、このサンプルアプリ、本当に素晴らしい教材である。

■サンプルの構成
findaddresstask.aspx  検索条件指定画面
findaddress.aspx 検索処理、検索結果一覧表示画面
findaddressfunctions.aspx geocodingサイトへPOSTと結果(UTF-8XML)の整形

findaddresstask.aspx→findaddress.aspxにPOST

address_search.jpg

・geocodingサイトの変更
GeocodeAddress requestGeocodeAddress(String address)内
//String urlString = "http://geocoder.us/service/rest/geocode?address=" + Server.UrlEncode(address);

String urlString = "http://www.geocoding.jp/api/?v=1.1&q=" + Server.UrlEncode(address);

に書き換える。


XMLのタグ変更
GETのレスポンスの結果XMLが当然異なるので、取得するタグの名前を変える。

//座標値の取得 

addr.lon = doc.GetElementsByTagName("lng").Item(0).FirstChild.Value;
addr.lat = doc.GetElementsByTagName("lat").Item(0).FirstChild.Value;
//住所の取得 

//address = doc.GetElementsByTagName("address").Item(0).FirstChild.Value;
address = doc.GetElementsByTagName("google_maps").Item(0).FirstChild.Value;