我们可以通过 BMap.LocalSearch 检索地图上的地点(POI),支持普通检索、范围检索和周边检索三种方式。
在指定城市或当前地图视野内检索关键词。创建实例时传入地图实例,检索结果会自动在地图上展示标注:
var localSearch = new BMap.LocalSearch(map, {renderOptions: {map: map, // 传入地图实例,检索结果自动在地图上标注autoViewport: true,},});localSearch.search('景点');
BMap.LocalSearch第一个参数还支持城市名称和坐标点,用于指定检索范围。
// 以城市名称指定检索范围var localSearch = new BMap.LocalSearch('上海市', { ... });// 以坐标点指定检索范围(以坐标所在城市为检索范围)var localSearch = new BMap.LocalSearch(new BMap.Point(116.404, 39.915), { ... });
搜索关键字除了传入单独的字符串之外,还支持多关键字检索。
localSearch.search(["酒店", "加油站"]);
通过 searchNearBy 方法以指定坐标点为圆心、指定半径范围内检索,周边检索的半径最大支持 100000 米,默认 2000 米。
var localSearch = new BMap.LocalSearch(map, {renderOptions: {map: map,autoViewport: false},onSearchComplete: function (result) {if (localSearch.getStatus() === BMAP_STATUS_SUCCESS) {console.log('共找到 ' + result.getNumPois() + ' 个结果');}},});var center = new BMap.Point(116.404, 39.915);localSearch.searchNearby('超市', center, 1000);
通过 searchInBounds 方法在指定矩形范围内检索:
var localSearch = new BMap.LocalSearch(map, {renderOptions: { map: map, autoViewport: true },onSearchComplete: function (result) {if (localSearch.getStatus() === BMAP_STATUS_SUCCESS) {console.log('共找到 ' + result.getNumPois() + ' 个结果');}},});var bounds = new BMap.Bounds(new BMap.Point(116.30, 39.85), // 左下角坐标new BMap.Point(116.50, 39.95), // 右上角坐标);localSearch.searchInBounds('银行', bounds);
检索结果通过 onSearchComplete 回调返回,可以在这个回调函数获取到检索结果 LocalResult:
onSearchComplete: function (result) {if (localSearch.getStatus() !== BMAP_STATUS_SUCCESS) {return;}console.log('总结果数:' + result.getNumPois()); // 总结果数console.log('当前页结果数:' + result.getCurrentNumPois()); // 当前页的结果数console.log('总页数:' + result.getNumPages()); // 总页数for (var i = 0; i < result.getCurrentNumPois(); i++) {var poi = result.getPoi(i);console.log(poi.title); // POI名称console.log(poi.address); // POI地址console.log(poi.point); // POI坐标,BMap.Point对象}},
上一篇
下一篇