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になるのでそれで判定。