信息查询
DaxiMap Android SDK支持对数据模型(Model)、公共设施(Pub)、自定义标注(Marker)等地图元素的搜索分析。本模块是对查询地图元素的调用接口说明。 ##创建搜索分析对象 获取地图加载后搜索分析属性即可
DXSearchAnalysis mSearchAnalysis = new DXSearchAnalysis(mMap);
创建搜索参数#
搜索参数包括定义搜索的各种条件, 比如楼层,关键词, featureId等。
室内搜索参数#
• floorId查询
//查询出bdid=B000A11DGP 楼层ID=DX0002250110100001的所有地图元素,包括model,label,facility,marker等
DXSearchOptions searchOptions = new DXSearchOptions();
searchOptions.bdid("B000A11DGP"); // BDID
searchOptions.floorId("DX0002250110100001"); // 搜索的楼层
• featureId查询。根据FID查询如果匹配,结果有且只有1条记录
//查询出所有楼层的地图元素中featureId='DX0002250110100001'的对象,featureId为地图内唯一标识。
DXSearchOptions searchOptions = new DXSearchOptions();
searchOptions.bdid("B000A11DGP"); // BDID
searchOptions.featureId("DX0002250110100001"); // 搜索的楼层
• keyword查询
//查询出bdid=B000A11DGP 所有楼层的地图元素中name包含'洗手间'的对象集合。
DXSearchOptions searchOptions = new DXSearchOptions();
searchOptions.bdid("B000A11DGP"); // BDID
searchOptions.keyword("洗手间"); // 搜索关键词
• 关键字组合查询
//查询出bdid=B000A11DGP 楼层ID=DX0002250110100001,且元素地图元素中name包含'洗手间'的对象集合
DXSearchOptions searchOptions = new DXSearchOptions();
searchOptions.bdid("B000A11DGP"); // BDID
searchOptions.featureId("DX0002250110100001"); // 搜索的楼层
searchOptions.keyword("洗手间"); // 搜索关键词
室外搜索参数#
• keyword查询
//以城市010中心为中心搜索name包含keyword的地图元素。
DXSearchOptions searchOptions = new DXSearchOptions();
searchOptions.citycode("010"); // 城市ID
searchOptions.keyword("景区"); // 搜索关键词
• keyword查询
//以指定坐标为中心搜索name包含keyword的地图元素。
DXSearchOptions searchOptions = new DXSearchOptions();
searchOptions.citycode("010"); // 城市ID
searchOptions.position(new DXLatLng(39.929308, 116.389664)); // 搜索中心坐标
searchOptions.keyword("景区"); // 搜索关键词
其他参数配置#
DXSearchOptions dxSearchOptions = new DXSearchOptions();
/**
* INDOORSERCH,是站内搜索,
* GDSEARCHOUTDOOR 高德搜索站外(如果定义的区域则排除区域内的)
* GDSEARCHINDOOR 高德搜索站内 (如果定义的区域则排除区域外的)
* GDSEARCHALL 高德站内外数据 (不管是否定义室内区域都返回内外的数据)
* GDSEARCHFORMRADIUS 返回高德室外的和站内搜索结果, 根据定义的区域来区分边界
* 可不传,默认为INDOORSERCH
*/
dxSearchOptions.setDataType(DXSearchOptions.GDSEARCHFORMRADIUS);
/**
设置搜索半径 可不传,默认参数为50000
*/
dxSearchOptions.setRadius(radius);
/**
以longitude,latitude为中心点,radius为半径搜索范围
*/
dxSearchOptions.circle(longitude,latitude,radius);
查询分析#
搜索分析对象执行query方法,传入搜索参数对象,返回查询结果。代码如下所示:
// 设置搜索参数
DXSearchOptions searchOptions = new DXSearchOptions();
searchOptions.keyworld("洗手间"); // 搜索关键词
searchOptions.bdid("B000A11DGP"); // 可选无bdid查询室外
searchOptions.floorId("DX0002250110100001"); // 搜索的楼层
searchOptions.returnCount(30); // 返回数量
// 开始搜索
mSearchAnalysis.query(searchOptions, new DXOnSearchListener(){
@Override
public void onSearchSuccess(List<DXPoiItem> resultList) {
// 搜索成功
for(int i = 0; i < resultList.size(); i++){
DXPoiItem item = resultList.get(i);
DXMarkerOptions markerOptions = new DXMarkerOptions();
markerOptions.iconPath("poi_red.png");
markerOptions.position(new DXLatLng(item.latitude, item.longitude));
markerOptions.title(item.title);
DXMarker marker = mMap.addMarker(markerOptions);
}
}
@Override
public void onSearchFailed(String errorMessage) {
// 搜索失败
Log.d("Search", errorMessage);
}
});