今天这篇博客大概分为
1:模糊搜索(具体行业)
2:天气查询
3:获取地址描述数据(地理编码(地址转坐标)或者 逆地理编码(坐标转地址))
一、模糊搜索
有时候需求是文本框里输入武汉,就搜索出包含武汉的关键词(如武汉大学,武汉天河机场,武汉等),下面我们来实现。
1、填写高德key
2、导入高德搜索包,我这里用的是(AMap_Search_V3.4.0_20160811.jar)
这里我们就可以开始实现功能,一个文本框输入搜索内容,然后POI模糊搜索。
public class MainActivity extends Activity {
EditText et_view;
PoiSearch poiSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
et_view = (EditText) findViewById(R.id.et_view);
et_view.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String content = et_view.getText().toString().trim();
//判断内容不为空
if (null != content && !content.isEmpty()) {
//通过Query设置搜索条件,第一个参数为搜索内容,第二个参数为搜索类型,第三个参数为搜索范围(空字符串代表全国)。
PoiSearch.Query query = new PoiSearch.Query(content, "", "");
poiSearch = new PoiSearch(MainActivity.this, query);
poiSearch.setOnPoiSearchListener(new PoiSearch.OnPoiSearchListener() {
@Override
public void onPoiSearched(PoiResult poiResult, int errcode) {
//判断搜索成功
if (errcode == 1000) {
if (null != poiResult && poiResult.getPois().size() > 0) {
for (int i = 0; i < poiResult.getPois().size(); i++) {
Log.i("TAG_MAIN", "POI 的行政区划代码和名称=" + poiResult.getPois().get(i).getAdCode()+","+poiResult.getPois().get(i).getAdName());
Log.i("TAG_MAIN", "POI的所在商圈=" + poiResult.getPois().get(i).getBusinessArea());
Log.i("TAG_MAIN", "POI的城市编码与名称=" + poiResult.getPois().get(i).getCityCode()+","+poiResult.getPois().get(i).getCityName());
Log.i("TAG_MAIN", "POI 的经纬度=" + poiResult.getPois().get(i).getLatLonPoint());
Log.i("TAG_MAIN", "POI的地址=" + poiResult.getPois().get(i).getSnippet());
Log.i("TAG_MAIN", "POI的名称=" + poiResult.getPois().get(i).getTitle());
}
}
}
}
@Override
public void onPoiItemSearched(PoiItem poiItem, int i) {
}
});
poiSearch.searchPOIAsyn();
}
}
});
}
}
我搜索的字符串是:武汉,搜索的城市是:武汉,搜索结果如下:
09-26 14:53:04.490 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的行政区划代码和名称=420111,洪山区
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的所在商圈=
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的城市编码与名称=027,武汉市
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的经纬度=30.607375,114.424376
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的地址=4号线
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉火车站(地铁站)
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的行政区划代码和名称=420102,江岸区
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的所在商圈=汉阳江滩公园
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的城市编码与名称=027,武汉市
09-26 14:53:04.492 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的经纬度=30.584355,114.298572
09-26 14:53:04.492 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的地址=江岸区
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的行政区划代码和名称=420102,江岸区
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的所在商圈=汉阳江滩公园
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的城市编码与名称=027,武汉市
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的经纬度=30.593235,114.305429
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的地址=沿江大道188号
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市人民政府
这只是一部分,如果还需要其他更多内容可在http://a.amap.com/lbs/static/unzip/Android_Map_Doc/index.html里查找可返回的内容
当然我观察了某一部分APP,比如医学类APP,那么他要求的可能是搜索结果只能是医院,如果是出行类APP可能要求搜索结果只是酒店等,像这种要求搜索结果是特定类型的我们应该如何实现呢,我们可以看到Query查询的第二个参数没有填写,第三个参数是城市,那么第二个参数我们就需要去填写查询的分类了,这里我们填写医疗保健服务的类型码。
PoiSearch.Query query = new PoiSearch.Query(“武汉”, “090100”, “”);
然后我们去搜索
09-26 15:05:24.296 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉大学医院
09-26 15:05:24.296 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市汉口医院
09-26 15:05:24.296 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉仁爱医院
09-26 15:05:24.296 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市第二医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉东南医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉中原医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉华夏医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉华西医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市第十一医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市亚心七医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市汉口医院(东区)
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉常青医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉友好医院(鹦鹉大道)
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉紫荆医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉东方医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市第九医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉蓝湖医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市东湖医院
09-26 15:05:24.299 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉仁和医院
09-26 15:05:24.299 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市汉阳医院
那么搜索结果的类型就全部是医疗保健服务的了,那么类型码有哪些呢,类型码如下:
010000 汽车服务 汽车服务相关 汽车服务相关 <