1

そのため、Bing Maps AJAX API(v7)の検索モジュールを使用しようとしていますが、Interactive SDKで、bounds検索する境界ボックスを指定するというプロパティを渡すことができることに気付きました。この例では、マップの現在の境界ボックスを使用しているだけなので、理論的には、ズームインすると、新しい検索で、ズームインした領域内の結果が表示されるはずです。

問題は次のとおりです。InteractiveSDKのサンプルコードの最後に次のコードを追加します。

Microsoft.Maps.Events.addHandler(map, 'viewchange', searchRequest);

これが行うべきことは、マップ内を移動したり、ズームインまたはズームアウトしたりするたびに、マップの新しい境界領域で新しい検索を起動する必要があります...次のような線があるためですbounds: map.getBounds(),。実際に発生するのは、ズームする前の元の位置に戻ることです。

私をクレイジーと呼んでください、しかしboundsプロパティは完全に無視されているだけですか?検索結果を現在表示されているマップエリアに制限する方法を知っている人はいますか?

最後に:それは私だけですか、それともV7のAPIドキュメントはかなり不完全ですか?APIドキュメントに表示されていないものをChromeコンソールで調べることで、いくつかのことを見つけることができました。

更新:これは、検索関数への私の呼び出しがどのように見えるかです:

searchManager.search({
    bounds: map.getBounds(),
    callback: searchSuccess,
    count: 20,
    entityType:"Business",
    errorCallback: searchFail,
    startIndex: 0,
    userData: userData,
    what: what,
    where: search
});
4

1 に答える 1

2

6.0 から移行したときに使用可能だったかどうかわからないため、on view changed を個人的に使用したことはありません。

トリックを完了するために行った別のルートを共有します。

私の検索機能は、ユーザーが検索した正確な場所に Microsoft.Maps.Pushpin を配置します (「あなたはここにいます!」)。

次に、プッシュピンから境界を作成します。

var viewBoundaries = Microsoft.Maps.LocationRect.fromLocations(pushpin.getLocation());

次に、境界の Map.setView プロパティを設定します。(私の場合はズームも)

map.setView({ bounds: viewBoundaries });
map.setView({ zoom: 10 });

画鋲を使用していない場合は、位置クラスからビューの境界を簡単に作成できます。

MSDN ロケーション クラス

于 2012-09-24T16:22:54.497 に答える