VEMap.Find メソッド
what (ビジネス) 検索や where (位置) 検索を実行します。2 つのパラメータのうち少なくとも 1 つを指定する必要があります。
構文
VEMap.Find(what, where, findType, shapeLayer, startIndex, numberOfResults, showResults, createResults, useDefaultDisambiguation, setBestMapView, callback);
パラメータ
パラメータ | 説明 |
---|---|
what |
検索するビジネスの名前、カテゴリ、またはその他の項目です。検索結果にプッシュピンを追加する場合、このパラメータの指定は必須です。 |
where |
検索する地域の住所または地名です。このパラメータはオーバーロードされています。詳細については「解説」セクションを参照してください。 |
findType |
実行する検索の種類を指定する VEFindType 列挙体の値です。現在サポートされている値は、VEFindType.Businesses のみです。 |
shapeLayer |
VEShapeLayer クラス オブジェクトへの参照です。what パラメータが指定されている場合、このオブジェクトに検索結果のプッシュピンが追加されます。このパラメータの指定は任意です。シェイプ レイヤが指定されていない場合、プッシュピンはマップのベース レイヤに追加されます。有効な VEShapeLayer 参照でない場合は、例外がスローされます。 |
startIndex |
返される結果の開始インデックスです (任意指定)。既定値は 0 です。 |
numberOfResults |
返される結果の数です。startIndex を起点とします。既定値は 10、最小値は 1、最大値は 20 です。 |
showResults |
検索結果のプッシュピンを表示するかどうかを指定する Boolean 値です (任意指定)。既定値は true です。 |
createResults |
what パラメータが指定されている場合にプッシュピンを作成するかどうかを指定する Boolean 値です (任意指定)。true の場合、プッシュピンが作成されます。false の場合、callback パラメータで指定した関数に渡される引数は、次のとおり設定されます。
|
useDefaultDisambiguation |
場所検索の結果の候補が複数ある場合に、マップ コントロール上に地名の選択画面を表示するかどうかを指定する Boolean 値です。true の場合、地名の選択画面が表示されます。このパラメータの指定は任意です。既定値は true です。 |
setBestMapView |
位置検索の最初の結果に合わせてマップ コントロールのビューを移動するかどうかを指定する Boolean 値です。true の場合、マップ コントロールのビューが移動します。このパラメータの指定は任意です。既定値は true です。 |
callback |
サーバー側から呼び出して検索結果を渡す関数の名前です。 このパラメータが null ではなく、useDefaultDisambiguation が true の場合、指定されている関数が呼び出されるのは、ユーザーが地名の選択画面で地名を選択した後になります。このパラメータの指定は任意です。 |
戻り値
このメソッドには、戻り値はありません。callback パラメータで指定された関数は、以下の引数を、記載されている順序でサーバーから受け取ります。
- VEShapeLayer クラス オブジェクト。shapeLayer が指定されている場合、同じオブジェクトになります。
- VEFindResult クラス オブジェクトの配列。
- VEPlace クラス オブジェクトの配列。
- 現在の結果セットの後にも結果があるかどうかを示す Boolean 値。
- String。エラー メッセージがある場合、ここに格納されます。
解説
このメソッドのコールバック関数は、再入可能ではありません。以前の Find 呼び出しが検索結果をコールバック関数 (callback に指定された関数) に返す前にアプリケーションから Find が呼び出された場合、以前の呼び出しで渡された一連の引数は無効になり、利用できなくなります。
Find の呼び出しでは、what パラメータ (null 以外) と where パラメータ (null 以外) の一方 (または両方) を指定する必要があります。
Find の呼び出しで what パラメータ (null 以外) を指定する場合は、以下の点に注意してください。
- コールバック関数の最初の引数として、マップ コントロールから VEShapeLayer クラス オブジェクトが返されます。検索が失敗した場合、この引数は null になります。それ以外の場合には、返されたレイヤに、2 番目の引数として返されるプッシュピンがすべて追加されています。
- コールバック関数の 2 番目の引数として、マップ コントロールから VEFindResult クラス オブジェクトが返されます。検索が失敗した場合、この引数は null になります。それ以外の場合には、各 VEFindResult オブジェクトに、対応する VEShape クラス (プッシュピン) への参照が格納されています。
- what パラメータを指定した場合、where パラメータが null のときは、setBestMapView パラメータが true でも現在のマップ ビューが使用されます。
Find の呼び出しで where パラメータ (null 以外) を指定する場合は、以下の点に注意してください。
- where パラメータはオーバーロードされています。"London"、"123 Main Street" などの場所を表す String、または VEPlace クラス オブジェクトを指定できます。
- where パラメータが String の場合、場所名または住所のジオコード化に使用されます。
- コールバック関数の 3 番目の引数として、マップ コントロールから VEPlace オブジェクトの配列が返されます。検索が失敗した場合、この引数は null になります。それ以外の場合、格納されているオブジェクトは位置検索の結果の候補を表します。
- where に指定した検索文字列に複数の位置が一致した場合、useDefaultDisambiguation が true に設定されていれば、地名の選択画面が表示されます。ユーザーがこの画面で場所を選択しなければ、マップ コントロールの検索は完了せず、コールバック関数は呼び出されません。
- where パラメータを指定し、what パラメータを null にした場合、コールバック関数に 3 番目の引数として返された VEPlace オブジェクトの中に MatchConfidence プロパティの値が VEMatchConfidence.High のものが 1 つでもあれば、useDefaultDisambiguation パラメータが true でも、地名の選択画面は表示されません。この場合、返された配列の最初の VEPlace オブジェクトが表示されます。ただし、検索結果の候補の場所すべてがこの配列に格納されて返されるので、アプリケーション側で独自の地名の選択画面を表示して、ユーザーに問い合わせることは可能です。
ローカライズされた検索結果は、マップ コントロール参照に mkt 属性を追加することで返すことができます。サポートされているカルチャなど、ローカライズされた結果を返す方法の詳細については、「ローカライズされた結果を返す方法」を参照してください。
例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1"></script>
<script type="text/javascript">
var map = null;
var index = 0;
var results = null;
function GetMap()
{
map = new VEMap('myMap');
map.LoadMap();
}
function FindLoc(numResults)
{
try
{
results = map.Find(txtWhat.value,
txtWhere.value,
null,
null,
index,
numResults,
true,
true,
true,
true,
MoreResults);
index = parseInt(index)+9;
}
catch(e)
{
alert(e.message);
}
}
function MoreResults(layer, resultsArray, places, hasMore, veErrorMessage)
{
if(hasMore)
{
var r = "<a href='#' onclick='javascript:FindLoc(parseInt(txtNumResults.value));'>" +
"クリックすると他の検索結果を表示できます。</a>";
document.getElementById('results').innerHTML = r;
}
else
{
index=0;
number=Number(txtNumResults.value);
document.getElementById('results').innerHTML = "";
document.getElementById('results').innerHTML = "他の検索結果はありません";
}
}
</script>
</head>
<body onload="GetMap();" style="font-family:MS PGothic">
<div id='myMap' style="position:relative; width:400px; height:400px;"></div>
キーワード:
<input id="txtWhat" type="text" name="txtWhat" value="Pizza"/>
<br />
場所:
<input id="txtWhere" type="text" name="txtWhere" value="Toledo, OH"/>
検索結果の数:
<input id="txtNumResults" name="txtNumResults" type="text" maxlength="2" style="width:37px" value="10" />
<input id="find" type="button" value="検索" name="find" onclick="FindLoc(txtNumResults.value);"/>
<div id="results"></div>
</body>
</html>
関連項目
概念
VEPlace クラス
VEFindResult クラス
VEShapeLayer クラス
ローカライズされた結果を返す方法