function getLatLng(address) {
// いったん地物をクリア
myMap.clearFeatures();
// ジオコーダのコンストラクタ
var geocoder = new Y.GeoCoder();
// geocodeリクエストを実行。
// 第1引数はqueryプロパティに検索したい住所を入れればOK。
// 第2引数はコールバック関数。
geocoder.execute({
query : address
} , function(ydf) {
// 結果が1つ以上あれば・・
if (ydf.result.count > 0) {
// 結果の表示範囲。結果が1つとは限らないので、Y.LatLngBoundsで用意。
var myBounds = new Y.LatLngBounds();
for (var i = 0; i < ydf.features.length; i++) {
// 緯度経度を取得
var latlng = ydf.features[i].latlng;
// 検索結果地が含まれるように範囲を拡大
myBounds.extend(ydf.features[i].latlng);
// あとはご自由に・・・
var myMarker = new Y.Marker(ydf.features[i].latlng);
myMarker.bindInfoWindow("(緯度,経度)=<br>(" + ydf.features[i].latlng + ")<br>" + ydf.features[i].property.Address);
myMap.addFeature(myMarker);
}
// 範囲を移動
myMap.drawBounds(myBounds);
} else {
alert("見つかりません。");
}
});
}
Y.GeoCoder()クラスのexecuteの第1引数の query プロパティに住所や地名を与えると、第2引数のコールバック関数には、検索結果が引数として渡されます。見つかった場合には、結果がたとえ1つであっても配列として渡されるので、ループさせて取り出します。
見つからなかった場合はresult.countやfeatures.lengthが0になるのでそれで判定。