1

所以我正在尝试使用 Bing Maps AJAX API (v7) 的搜索模块,我注意到在交互式 SDK 中,您可以传入一个名为的属性,您可以在bounds其中提供一个边界框进行搜索。该示例仅使用地图的当前边界框,因此理论上,如果您放大,新的搜索应该只会显示您放大区域内的结果,对吗?

那么问题来了:在交互式 SDK 中的示例代码末尾添加以下代码:

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

应该做的是每次您在地图上移动或放大或缩小时,它都应该使用地图的新边界区域进行新搜索......我这么说是因为这条线看起来像这样:bounds: map.getBounds(),。实际发生的是,它会反弹回缩放之前的初始位置。

说我疯了,但bounds财产只是被完全忽略了吗?有谁知道如何将搜索结果限制在当前可见的地图区域?

最后:只有我一个人,还是 V7 的 API 文档不完整?通过检查 Chrome 控制台中未出现在 API 文档中的内容,我设法找到了一些东西。

更新:这就是我对搜索功能的调用:

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 迁移时是否可用。

我将分享我走的另一条路线,以完成这项工作。

我的搜索功能还将 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 回答