接上百度地图(切换地图类型)
https://blog.csdn.net/nishigesb123/article/details/89669042
依旧?
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/search/poi
POI检索
概述
Point of Interest,即“兴趣点”。
在地理信息系统中,一个POI可以是一栋房子、一个景点、一个邮筒或者一个公交站等。
百度地图SDK提供三种类型的POI检索:
- 城市内检索
- 周边检索
- 区域检索(即矩形区域检索)
POI城市内检索(关键字检索)
关键字检索适用于在某个城市内搜索某个名称相关的POI,例如:查找“北京市”的“小吃”。
创建步骤
1、创建POI检索实例
mPoiSearch = PoiSearch.newInstance();
2、创建POI检索监听器
OnGetPoiSearchResultListener listener = new OnGetPoiSearchResultListener() {
@Override
public void onGetPoiResult(PoiResult poiResult) {
}
@Override
public void onGetPoiDetailResult(PoiDetailSearchResult poiDetailSearchResult) {
}
@Override
public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
}
//废弃
@Override
public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
}
};
3、设置检索监听器
mPoiSearch.setOnGetPoiSearchResultListener(listener);
4、设置PoiCitySearchOption,发起检索请求
/**
* PoiCiySearchOption 设置检索属性
* city 检索城市
* keyword 检索内容关键字
* pageNum 分页页码
*/
mPoiSearch.searchInCity(new PoiCitySearchOption()
.city("北京") //必填
.keyword("美食") //必填
.pageNum(10));
5、释放检索实例
mPoiSearch.destroy();
完整实例
准备一个Button作为Poi检索的发起入口
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="poiclick"
app:layout_constraintBottom_toBottomOf="parent"
android:text="POI检索"/>
代码如?
package com.example.firstmapapplication;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.core.PoiInfo;
import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
import com.baidu.mapapi.search.poi.PoiCitySearchOption;
import com.baidu.mapapi.search.poi.PoiDetailResult;
import com.baidu.mapapi.search.poi.PoiDetailSearchResult;
import com.baidu.mapapi.search.poi.PoiIndoorResult;
import com.baidu.mapapi.search.poi.PoiResult;
import com.baidu.mapapi.search.poi.PoiSearch;
import java.util.List;
public class MainActivity extends Activity {
private MapView mMapView = null;
private BaiduMap mBaiduMap;
private PoiSearch mPoiSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
//普通地图 ,mBaiduMap是地图控制器对象
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
//卫星地图
//mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
//空白地图
//mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);
//开启交通图
//mBaiduMap.setTrafficEnabled(true);
//开启热力图
//mBaiduMap.setBaiduHeatMapEnabled(true);
//定义Maker坐标点
//LatLng point = new LatLng(39.963175, 116.400244);
//构建Marker图标
//BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.a1);
//构建MarkerOption,用于在地图上添加Marker
//OverlayOptions option = new MarkerOptions().position(point).icon(bitmap);
//在地图上添加Marker,并显示
//mBaiduMap.addOverlay(option);
//创建POI检索实例
mPoiSearch = PoiSearch.newInstance();
//创建POI检索监听器
OnGetPoiSearchResultListener listener = new OnGetPoiSearchResultListener() {
@Override
public void onGetPoiResult(PoiResult poiResult) {
//获取POI检索结果
List<PoiInfo> poiInfos = poiResult.getAllPoi();
for (PoiInfo p :poiInfos){
System.out.println("地址:"+p.address);
System.out.println("城市:"+p.city);
System.out.println("区域:"+p.area);
}
}
@Override
public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
//获取Place详情页检索结果
}
@Override
public void onGetPoiDetailResult(PoiDetailSearchResult poiDetailSearchResult) {
}
@Override
public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
}
};
//设置检索监听器
mPoiSearch.setOnGetPoiSearchResultListener(listener);
}
public void poiclick(View view){
//发起检索请求(异步)
mPoiSearch.searchInCity(new PoiCitySearchOption()
.city("北京") //必填
.keyword("美食") //必填
.pageNum(10));
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
//释放检索实例
mPoiSearch.destroy();
}
}
效果如?
信息的话,只输出了地址区域城市
实际上可以输出的内容还是很多的~如?
其他信息可以参考:
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/search/poi