您现在的位置: 开发 > 地图 JS API > 开发指南 > 获取地图数据 > 搜索 >

高德 开发 地图 JS API 开发指南 获取地图数据 搜索

更新时间:2017年05月23日

亲手试一试

关键字搜索插件提供某一特定地区的兴趣点位置查询服务。允许设置搜索城市、搜索数据类别、搜索结果详略、搜索结果排序规则等。用户可以通过自定义回调函数取回并显示查询结果。若服务请求失败,系统将返回错误信息。

插件引入与对象创建

在使用插件之前,需要使用AMap.service方法加载插件,然后在回调函数中可以进行服务的设定和查询:

AMap.service('AMap.PlaceSearch',function(){//回调函数
    //实例化PlaceSearch
    placeSearch= new AMap.PlaceSearch();
    //TODO: 使用placeSearch对象调用关键字搜索的功能
})

关键字搜索插件的使用方式

关键字搜索插件以及公交换乘插件(AMap.Transfer)、驾车(AMap.Driving)步行(AMap.Walking)路径规划插件、云图插件(AMap.CloudDataSearch)都有两种使用方式:

第一种,在构造函数里传入map或panel参数,或两者都传入。map为AMap.Map实例,panel为div元素或其id号。一旦传入,api会自动为用户生成交互面板和地图展示。用户自己控制div的显示位置及大小,api生成的交互面板和地图展示的皮肤格调可以通过修改样式来实现,样式名可以通过浏览器的调试工具查看。实际上,面板的生成及地图展示是用独立的渲染插件实现的,用户可以把渲染插件下载下来任意修改默认皮肤的样式及结构。代码示例:

var placeSearch = new AMap.PlaceSearch({ //构造地点查询类
    pageSize: 5,
    pageIndex: 1,
    city: "010", //城市
    map: map,
    panel: "result"
});
//关键字查询
placeSearch.search('方恒', function(status, result) {
});

第二种,直接使用服务返回的数据,构造的option中不写map和panel属性,在search方法中传入回调函数,如:

var placeSearch = new AMap.PlaceSearch({ //构造地点查询类
    pageSize: 5,
    pageIndex: 1,
    city: "010"//城市
});
//关键字查询
placeSearch.search('方恒', function(status, result) {
   //TODO:开发者使用result自己创建交互面板和地图展示
});

场景一、按关键字和类别搜索

假设现在我们想要查询北京市有哪些风景名胜:

查询参数设定

要实现这个功能,在查询之前,需要将参数type设定为'风景名胜',city设置为'010'。参数设定的方式有两种,一种是在插件对象初始化的时候直接设置相应的参数值:

//在对象初始化的时候设定
var placeSearch= new AMap.PlaceSearch({
        type:'风景名胜',
        city: "010" //城市
});

另一种是在插件对象初始化之后,通过调用相应的方法来进行。

//在对象初始化之后进行
var placeSearch= new AMap.PlaceSearch();
placeSearch.setType('风景名胜');
placeSearch.setCity('010');
   

查询参数详情

参数名称

类型

说明

type

String

兴趣点类别,多个类别用“|”分割,如“餐饮|酒店|电影院”

POI搜索类型共分为以下20种:

汽车服务|汽车销售|汽车维修|摩托车服务|餐饮服务|购物服务|生活服务|体育休闲服务|

医疗保健服务|住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|

交通设施服务|金融保险服务|公司企业|道路附属设施|地名地址信息|公共设施

默认值:'餐饮服务|商务住宅|生活服'

city

String

兴趣点城市

可选值:城市名(中文或中文全拼)、citycode、adcode

默认值:“全国”

参数设定相关方法

方法名

返回值

说明

setCity(city:String)

设置查询城市,支持cityname(中文或中文全拼)、citycode、adcode

setType(type:String)

设置查询类别,多个类别用“|”分割

默认值:所有类别

调用search方法

设定好相关的参数值后,调用search方法进行查询,讲''作为第一个参数,表示我们要查询任意风景名胜的,也可以按照需要传入其他关键字,第二个参数为回调函数,用来处理服务返回的数据,如果使用了map和panel属性的画,api将帮助完成点的标注和列表生成:

//调用查询方法
placeSearch.search('',function(status, result){
    //TODO : 按照自己需求处理查询结果
})
//搜索带'公园'字样的风景名胜
placeSearch.search('公园',function(status, result){
    //TODO : 按照自己需求处理查询结果
})

回调函数返回查询结果的状态status和查询结果result。当status为complete的时候表示查询到有效结果。

回调结果

名称

类型

说明

status

String

结果状态码,“complete”时说明得到有效查询结果

result

Object

info为状态信息,得到有效查询结果时为“OK”

poiList

Array.<PoiList>

兴趣点列表

PoiList对象说明

字段名

类型

说明

pois

Array.

Poi列表

pageIndex

Number

页码

pageSize

Number

单页结果数

count

Number

查询结果总数

场景二、周边搜索

周边搜索是一个很有用的功能,假如我们需要查询某个兴趣点周边有什么餐馆:

查询参数设定

将参数type设定为'餐饮服务',city设置为'010':

//在对象初始化之后进行
var placeSearch= new AMap.PlaceSearch();
placeSearch.setType('餐饮服务');
placeSearch.setCity('010');

调用searchNearBy方法

设定好相关的参数值后,调用searchNearBy方法进行查询,将''作为参数1,参数2为中心点坐标,参数3为半径,单位米,参数4为回调函数。

placeSearch.searchNearBy("", [116.405467, 39.907761], 500, function(status, result) {
    if (status === 'complete' && result.info === 'OK') {
    //TODO : 解析返回结果,如果设置了map和panel,api将帮助完成点标注和列表
    }
});
移动端
示例中心
功能
在线体验
常见问题