所以我正在尝试使用Bing Maps AJAX API(v7)的搜索模块,我注意到in the Interactive SDK for it你可以传入一个名为bounds
的属性,你给了它一个边界框内搜索。该示例仅使用地图的当前边界框,因此从理论上讲,如果放大,新搜索应该只是在放大区域中显示结果,对吧?
这就是问题所在:在Interactive 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
});
答案 0 :(得分:2)
我没有亲自使用视图更改,因为我不确定从6.0迁移时是否可用。
我将分享另一条路线,我可以完成这项工作。
我的搜索功能还将Microsoft.Maps.Pushpin放在用户搜索的位置(“你在这里!”)。
然后我从图钉创建边界:
var viewBoundaries = Microsoft.Maps.LocationRect.fromLocations(pushpin.getLocation());
然后为bounds设置Map.setView属性。 (以及放大我的情况)
map.setView({ bounds: viewBoundaries });
map.setView({ zoom: 10 });
如果您没有使用图钉,只需从位置类创建视图边界即可。