检索服务提供某一特定地区的兴趣点位置查询服务(POI:Point of Interest,感兴趣点)。允许设置检索城市、检索圆形区域内POI、检索矩形区域内POI、检索结果详情。
LocalSearch:本地搜索,提供某一特定地区的位置搜索服务,比如在北京市搜索“公园”。目前支持城市检索、圆形检索、矩形检索。详情可见类参考。
说明:BMap.LocalSearch提供本地搜索服务,在使用本地搜索时需要为其设置一个检索区域,检索区域可以是BMap.Map对象、BMap.Point对象或者是省市名称(比如:"北京市")的字符串。BMap.LocalSearch构造函数的第二个参数是可选的,您可以在其中指定结果的呈现。BMap.RenderOptions类提供了若干控制呈现的属性,其中map指定了结果所展现的地图实例,panel指定了结果列表的容器元素。
检索POI服务提供三种检索方法:城市检索、圆形区域检索、矩形区域检索。
search方法提供根据关键字检索特定POI信息服务。 如下示例,为根据关键字“天安门”检索POI:
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 11);var local = new BMap.LocalSearch(map, {renderOptions: {map: map}});local.search("天安门");
searchNearby方法提供圆形区域检索服务。您可以在某个地点附近进行搜索,也可以在某一个特定结果点周围进行搜索。 下面示例展示如何在前门附近搜索小吃:
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 11);var local = new BMap.LocalSearch(map, {renderOptions: { map: map, autoViewport: true }});local.searchNearby("小吃","前门");
searchInBounds方法提供矩形区域检索服务。矩形范围搜索将根据您提供的视野范围提供搜索结果。
注意:当搜索范围过大时可能会出现无结果的情况。
如下示例,展示在当前地图视野范围内搜索银行:
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 14);var local = new BMap.LocalSearch(map,{ renderOptions: { map: map } });local.searchInBounds("银行", map.getBounds());
BMap.LocalSearch提供了若干配置方法,通过它们可以自定义搜索服务的行为以满足您的需求。
如下示例中,我们调整每页显示8个结果,并且根据结果点位置自动调整地图视野,不显示第一条结果的信息窗口:
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 14);var local = new BMap.LocalSearch("北京市",{renderOptions: { map: map, autoViewport:true },pageCapacity: 8});local.search("中关村")
通过设置BMap.LocalSearchOptions.renderOptions.panel属性,可以为本地搜索对象提供一个结果列表容器,搜索结果会自动添加到容器元素中。
如下示例:
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 11);var local = new BMap.LocalSearch(map,{ renderOptions: { map: map, panel:"results" });local.search("中关村");
除了搜索结果会自动添加到地图和列表外,您还可以通过数据接口获得详细的数据信息,结合地图API您可以自行向地图添加标注和信息窗口。
BMap.LocalSearch和BMap.LocalSearchOptions类提供了若干设置回调函数的接口,通过它们可得到搜索结果的数据信息。 例如,通过onSearchComplete回调函数参数可以获得BMap.LocalResult对象实例,它包含了每一次搜索结果的数据信息。 当回调函数被执行时,您可以使用BMap.LocalSearch.getStatus()方法来确认搜索是否成功或者得到错误的详细信息。
在下面这个示例中,通过onSearchComplete回调函数得到第一页每条结果的标题和地址信息,并输出到页面上:
var map = new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404,39.915), 11);var options = {onSearchComplete: function(results) {if (local.getStatus() == BMAP_STATUS_SUCCESS) {// 判断状态是否正确var s = [];for (var i = 0; i < results.getCurrentNumPois(); i ++) {s.push(results.getPoi(i).title + ", " + results.getPoi(i).address);}document.getElementById("log").innerHTML = s.join("<br>");}}};var local = new BMap.LocalSearch(map, options);local.search("公园");
上一篇
下一篇
本篇文章对您是否有帮助?