GoogleMapApiのサービスセクションのジオコーディングに紹介されているgetLatLngメソッドは、コールバック関数に無名関数を参照していて、関数を外だしにできなかなーと思っていろいろ試してみたらできたので書いてみたいと思います。
まずはじめにAPIに紹介されていたソース
var map = new GMap2(document.getElementById("map_canvas"));
via:[googleMapsApi]ジオコーディング
var geocoder = new GClientGeocoder();
function showAddress(address) {
geocoder.getLatLng(
address,
function(point) {
if (!point) {
alert(address + " not found");
} else {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
marker.openInfoWindowHtml(address);
}
}
);
}
で、今回問題となっているのは、コールバック関数の
function(point) { ・・・ } |
の部分で、これを外だしファンクションに変更
var map = new GMap2(document.getElementById("map_canvas")); var geocoder = new GClientGeocoder(); var gv_address; function showAddress(address) { //グローバル変数にセット gv_address = address; geocoder.getLatLng( gv_address, lf_setGmap ); } //経度・緯度を取得後呼ばれる関数 function lf_setGmap(point) { if (!point) { alert(gv_address + " not found"); } else { map.setCenter(point, 13); var marker = new GMarker(point); map.addOverlay(marker); marker.openInfoWindowHtml(gv_address); } } |
上の実装方法で、外だしファンクションでいけるはず!!
コールバック関数を外に出して、見た目はよくなったと思います。
addressをいったん、グローバル変数にセットしているのは、経度・緯度取得後、再度、住所を参照したいので、セットしました。
しかも、こうすることで、検索中にテキストの内容が書き換えられても検索元の住所を参照することができます。
0 コメント:
コメントを投稿