检索

**
第一步:

复制OverlayManager和PoiOverlay文件到Activity中
导入BaiduLBS_Android.jar和armeabi文件在lib目录下

**
//需要导的包

private MapView mMapView = null;
    private BaiduMap mbaiduMap;
    LatLng center = new LatLng(49.92235, 116.380338);
    int radius = 500;
    private PoiSearch poiSearch;

在oncreate中

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
// 注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);

Button bt = (Button) findViewById(R.id.bt);

// 获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);

mbaiduMap = mMapView.getMap();

BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.ic_launcher);
// 构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions().position(center).icon(
bitmap);
// 在地图上添加Marker,并显示
mbaiduMap.addOverlay(option);

}
/**
     * 获取POI搜索结果,包括searchInCity,searchNearby,searchInBound返回的搜索结果
     * 
     * @param result
     */

    public void ss(View v) {

        Log.e("poiSearch", "=====================");
        poiSearch = PoiSearch.newInstance();


        poiSearch
                .setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {

                    public void onGetPoiResult(PoiResult result) {
                        Log.e("new", "=====================");
                        // 获取POI检索结果
                        if (result == null
                                || result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {

                            return;
                        }
                        if (result.error == SearchResult.ERRORNO.NO_ERROR) {

                            Log.e("result", "=====================");
                            mbaiduMap.clear();
                            PoiOverlay overlay = new MyPoiOverlay(mbaiduMap);
                            mbaiduMap.setOnMarkerClickListener(overlay);
                            overlay.setData(result);
                            overlay.addToMap();
                            overlay.zoomToSpan();

                            showNearbyArea(center, radius);
                            return;
                        }
                    }

                    public void onGetPoiDetailResult(PoiDetailResult result) {
                        // 获取Place详情页检索结果
                    }

                    @Override
                    public void onGetPoiIndoorResult(PoiIndoorResult arg0) {
                        // TODO Auto-generated method stub

                    }
                });

            poiSearch.searchInCity((new PoiCitySearchOption()).city("北京")
            .keyword("美食").pageNum(10));


    }
private class MyPoiOverlay extends PoiOverlay {

        public MyPoiOverlay(BaiduMap baiduMap) {
            super(baiduMap);
        }

        @Override
        public boolean onPoiClick(int index) {
            super.onPoiClick(index);
//          PoiInfo poi = getPoiResult().getAllPoi().get(index);
//          // if (poi.hasCaterDetails) {
//          poiSearch.searchPoiDetail((new PoiDetailSearchOption())
//                  .poiUid(poi.uid));
            // }
            return true;
        }
    }
@Override
    protected void onDestroy() {
        super.onDestroy();
        // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.onDestroy();
    }

    @Override
    protected void onResume() {
        super.onResume();
        // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mMapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mMapView.onPause();
    }
/**
     * 对周边检索的范围进行绘制
     * 
     * @param center
     * @param radius
     */
    public void showNearbyArea(LatLng center, int radius) {

        Log.e("showNearbyArea", "===================");
        BitmapDescriptor centerBitmap = BitmapDescriptorFactory
                .fromResource(R.drawable.ic_launcher);
        MarkerOptions ooMarker = new MarkerOptions().position(center).icon(
                centerBitmap);
        mbaiduMap.addOverlay(ooMarker);

        OverlayOptions ooCircle = new CircleOptions().fillColor(0xCCCCCC00)
                .center(center).stroke(new Stroke(5, 0xFFFF00FF))
                .radius(radius);
        mbaiduMap.addOverlay(ooCircle);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值